gpt4 book ai didi

c# - 如何使用自定义类型重载 System.Math 方法

转载 作者:行者123 更新时间:2023-12-04 03:25:41 25 4
gpt4 key购买 nike

我目前正在研究一些自定义类型 Unit 我希望其他用户能够使用(sin、cos、ln 等)进行数学运算。

我想做的是重载 System.Math 中的数学函数以将 Unit 作为参数,这样当用户编码时,他们不必使用两个不同的静态来自两个类的方法(Math.Sin()Unit.Sin())在同一个表达式中用 double 和 Unit 进行数学运算。我想让任何想使用我的类(class)的人都能轻松上手。

如何重载 System.Math 或者是否有任何其他方法可以实现我的目标?

最佳答案

欢迎来到 Stack Overflow。感谢您的提问。

与大多数“.Net”一样,有多种方法可以实现这一点。我会用 user defined conversion operators .

通过使用转换运算符,您的 Unit 类型可以转换为其他数据类型。

例如,如果您想使用 Unit 执行 Math.Sin,您将创建一个显式或隐式转换运算符。

public struct Unit
{
private readonly double value;

public Unit(double value)
{
this.value = value;
}

public static implicit operator double(Unit d) => d.value;
public static explicit operator Unit(double b) => new Unit(b);
}

因此 Math.Sin(double) 现在可以接受单位。

var unit = new Unit(1d);
var sin = Math.Sin(unit);
Console.WriteLine(sin.ToString(CultureInfo.InvariantCulture));

如果这不能回答您的问题,请告诉我们有关 Unit 类型的更多信息。请随意将您现有的来源粘贴到您的原始问题中。

关于c# - 如何使用自定义类型重载 System.Math 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67626101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com