gpt4 book ai didi

c# - 使用反射的比较运算符

转载 作者:行者123 更新时间:2023-12-03 22:58:45 24 4
gpt4 key购买 nike

我想在运行时使用反射比较两个值。我为此使用 Comparer.Default.Compare(x,y),但我开始意识到这还不够。假设我想比较 double 和单精度 (1.0 == 10)。 Comparer.Default 将抛出异常,因为它坚持认为两个值必须是同一类型 (double)。但是,为此存在一个显式转换,这正是我想要使用的。

那么,为什么我不能只使用 Convert.ChangeType?以 1.25 > 1 (double > integer) 为例。如果我在 1.25 上尝试 Convert.ChangeType(1.25,typeof(int)),我将得到 1,并且上面的断言将失败,而实际上 1.25 IS > 1。

那么,有人可以建议一种调用类型定义的显式比较(如果存在)的方法吗?

谢谢。

最佳答案

您使用的是 C# 4 和 .NET 4 吗?如果是这样,使用动态类型真的很容易:

dynamic x = firstValue;
dynamic y = secondValue;
if (x > y) // Or whatever

编译器为您执行所有适当的转换。

关于c# - 使用反射的比较运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3761887/

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