gpt4 book ai didi

c# - 比较数字得到不同的结果

转载 作者:太空宇宙 更新时间:2023-11-03 22:03:19 24 4
gpt4 key购买 nike

我确信有一个简单的解释,但无法解决以下问题:

     const short amount = 30000;
bool isGreater =
ComparableExtensions.IsGreaterThan(amount, 29000); //returns true

bool isGreaterThan2 =
amount.IsGreaterThan<short>(29000);//returns false

public static class ComparableExtensions
{
public static bool IsGreaterThan<T>(this T leftValue, T rightValue)
where T : struct, IComparable<T>
{
var result = leftValue.CompareTo(rightValue) == 1;
return result;
}

}

是因为我设置了“Struct”约束吗?

有什么解释或建议吗?

谢谢

最佳答案

不,你错误地使用了leftValue.CompareTo(rightValue) == 1 .

相反,说 leftValue.CompareTo(rightValue) > 0 .

你只知道CompareTo返回 < 0如果leftValue小于 rightValue , 0如果leftValue等于 rightValue> 0如果leftValue大于 rightValue .您不仅可以检查 1 是否相等.

此外,您在这两个调用之间看到不同行为的原因是因为在第一种情况下您调用的是 IsGreaterThan<int>因为文字常量 29000将被解释为 Int32 , 但在第二种情况下你明确地说 short所以它将被解释为 Int16 .

关于c# - 比较数字得到不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9351972/

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