byte []的重载运算符

时间:2014-09-12 22:36:26

标签: c# operator-overloading

我想为C#中byte []类型的操作数重载&lt ;,>,< =和> =运算符。所以我发现了“二元运算符的一个参数必须是包含类型”的错误方法。无论如何,我似乎无法从byte []继承,我不想在另一个类中封装一个byte [](声音太多开销)。有办法解决吗?也许使用扩展方法?还是完全疯了?

非常感谢。

1 个答案:

答案 0 :(得分:2)

  

没有真正的方法可以这样做。 - Mehrdad Afshari

鉴于byte[] a, b

可以使用扩展方法将“罗嗦”运算符定义为a.GreaterThan(b),这实际上只是编写MyByteArray.GreaterThan(a, b)的一种简短方法。

但是,如果表达式中的两个(可能是相同的)类型都无法修改以添加此类操作符,则 可能无法定义运算符。

一个简单的包装器不会增加太多开销(或者有益吗?):MyByteArray.Rich(a) > b,其中Rich返回了一个定义了>运算符的类型。

隐式/显式强制转换也是因为a仍然无法修改,因为[自定义]强制转换是在源表达式上定义的,而不是目标表达式。