我想为C#中byte []类型的操作数重载&lt ;,>,< =和> =运算符。所以我发现了“二元运算符的一个参数必须是包含类型”的错误方法。无论如何,我似乎无法从byte []继承,我不想在另一个类中封装一个byte [](声音太多开销)。有办法解决吗?也许使用扩展方法?还是完全疯了?
非常感谢。
答案 0 :(得分:2)
没有真正的方法可以这样做。 - Mehrdad Afshari
鉴于byte[] a, b
:
可以使用扩展方法将“罗嗦”运算符定义为a.GreaterThan(b)
,这实际上只是编写MyByteArray.GreaterThan(a, b)
的一种简短方法。
但是,如果表达式中的两个(可能是相同的)类型都无法修改以添加此类操作符,则 可能无法定义运算符。
一个简单的包装器不会增加太多开销(或者有益吗?):MyByteArray.Rich(a) > b
,其中Rich
返回了一个定义了>
运算符的类型。
隐式/显式强制转换也是因为a
仍然无法修改,因为[自定义]强制转换是在源表达式上定义的,而不是目标表达式。