【发布时间】:2014-02-04 18:25:48
【问题描述】:
我正在编写一个基于用户生成条件的通用警报系统。测试值和实际值作为对象处理,因为它们可以是数字、布尔值或字符串,具体取决于所选属性。它需要容错并优雅地失败。
所以我正在寻找 C# 中的通用函数来对各种数据类型进行比较(大于/小于/等于)。
使用 IComparable 接口不起作用,因为它是特定于类型的,例如,如果 testValue 为 Int32 且 comparsonValue 为小数,则会崩溃:
object testValue = (int)10;
object comparisonValue = (decimal)11;
var comparison = ((IComparable)testValue).CompareTo(comparisonValue)
// Crashes with {System.SystemException}: {"Object must be of type Int32."}
C#中还有其他通用比较函数吗?我希望我不必自己编写所有代码。
【问题讨论】:
-
那么当有人问 int 是否小于 bool 时会发生什么?
-
优雅失败。它需要具有容错性。
-
哇,两张反对票?我有点迷路了。
-
优雅的意思是处理吗?和 try-catch 一样?
-
为容错编写您自己的自定义比较器。我所知道的 c# 中的所有东西都是强类型的。
标签: c# decimal icomparable int32