我想在 C# 中重载 byte[] 类型操作数的 <、>、<= 和 >= 运算符。所以我发现了“二元运算符的参数之一必须是包含类型”错误。无论如何,我似乎无法从 byte[] 继承,并且我不想将 byte[] 封装在另一个类中(听起来开销太大)。有办法解决吗?也许使用扩展方法?或者这完全是疯了?
非常感谢。
最佳答案
No real way to do so. – Mehrdad Afshari
给定字节[] a, b
:
可以使用扩展方法将“冗长”运算符定义为 a.GreaterThan(b)
,这实际上只是编写 MyByteArray.GreaterThan(a, b)
.
但是,如果表达式中的任何类型(可能相同)都无法修改以添加此类运算符,则不可能定义运算符。
不过,一个简单的包装器不会增加太多开销(或好处?):MyByteArray.Rich(a) > b
,其中 Rich
返回带有 >
运算符定义。
隐式/显式转换也被淘汰,因为 a
仍然无法修改,因为[自定义]转换是在源表达式而不是目标表达式上定义的。
关于c# - byte[] 的重载运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25817845/