【问题标题】:General comparison function, non-type specific, error-tolerant通用比较函数,非特定类型,容错
【发布时间】: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


【解决方案1】:

因此,面对 3 次反对票(好吧,我认为问题没有那么糟糕……)我将编写自己的自定义比较器,而不是搜索非特定类型的 IComparer.CompareTo 版本。

【讨论】:

  • 你觉得怎么样?
猜你喜欢
  • 1970-01-01
  • 2015-01-08
  • 2018-11-08
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多