【发布时间】:2012-05-22 19:09:44
【问题描述】:
我正在编写一个函数来比较两个 IComparable 类型的值,如果不相等则抛出。基本上,重新制作断言。是的,我知道我正在重新发明轮子。
public static void IsEqual<T>(T Value1, T Value2) where T : IComparable<T>
{
if (0 != Value1.CompareTo(Value2))
{
throw new ApplicationException("Fail");
}
}
除了字符串之外工作正常,我希望可以选择忽略大小写。 “AA”与“aa”
我想在 T 是字符串时专门重写此方法,因此我可以使用 String.Compare 并忽略大小写。拥有另一个参数也很酷,因此用户可以指定是否应该忽略字符串(尽管,这对于其他类型(如 int)来说是无用的,所以看起来有点像一个令人困惑/糟糕的设计。我愿意接受这里的建议)。
有什么好办法吗?我也愿意更改为与 IComparable 不同的类型,最初认为这是最适合这项工作的界面,但现在意识到我可能错了。
where T : IComparable<T>
【问题讨论】:
-
通过测试 T 的类型来简单地处理字符串大小写对您来说不可行吗?类似 if(typeof(T)==string) String.Compare(...)
-
是的,这就是我要找的。没有意识到类型比较是如何完成的。谢谢!
标签: c# icomparable