gpt4 book ai didi

c# - 如何防止函数中的隐式转换?

转载 作者:行者123 更新时间:2023-11-30 13:35:26 25 4
gpt4 key购买 nike

我正在编写一个 Utility 类,它具有像 IsEquals 和 IsGreaterThanEquals 这样的方法,可以接受 double 类型的参数。当我将浮点值发送到方法时,它们被隐式转换为 double 值并进行比较。我不希望这发生。当我发送 float 类型值而不是 double 类型值时,如何确保 float 值不会隐式转换为 double 并可能抛出编译错误?

public static bool Equals(double firstDouble, double secondDouble)
{
return Math.Abs(firstDouble - secondDouble) <= double.Epsilon;
}

即使我传递了 float 参数值,上面的代码也能正常工作。当我将 float 参数值传递给上述方法时,我希望编译抛出错误。

最佳答案

如果你想在编译过程中出现错误,请提供带有float 的方法,但将它们标记为Obsolete。 :

    [Obsolete("Don't use floats", error: true)]
public static bool Equals(float a, float b) {
throw new NotImplementedException();
}

[Obsolete("Don't use floats", error: true)]
public static bool Equals(double a, float b) {
throw new NotImplementedException();
}

[Obsolete("Don't use floats", error: true)]
public static bool Equals(float a, double b) {
throw new NotImplementedException();
}

public static bool Equals(double firstDouble, double secondDouble) {
return Math.Abs(firstDouble - secondDouble) <= double.Epsilon;
}

关于c# - 如何防止函数中的隐式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57461515/

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