在C#中覆盖二进制运算符

时间:2009-12-15 19:12:47

标签: c# .net

您好我有一个Expression.GreaterThanOrEqual(左,右),所以我想用以下数据评估字符串或域类型:

002-1400

所以当我使用GreaterThanOrEqual运算符“> =”时,我可以说002-1400 "is greater or equal than" 002-1400, 002-1399, 002-1398 ...所以我可以使用一些网格行来通过输入参数进行比较。

希望可以理解,

谢谢,

4 个答案:

答案 0 :(得分:3)

您无法在String类上定义运算符。但是,您可以创建自己的类型,并以您选择的任何方式定义相等关系。

答案 1 :(得分:1)

你会覆盖这样的东西:

public static operator >=(Foo foo1, Foo foo2)
{
    //code here...
}
public static operator ==(Foo foo1, Foo foo2)
{
    return foo1.Equals(foo2);
}
//etc... don't forget to implement Equals and GetHashCode!

请参阅this question了解实现创意的哈希码。

编辑:Ed Swangren是对的,你不能覆盖内置类的运算符。但是,您可以在自己的课程上覆盖它!

答案 2 :(得分:0)

查找运算符重载。 例如,请参阅MSDN: Operator Overloading Tutorial

答案 3 :(得分:0)

您可以使用operator overloading。请参阅此链接以获取教程。