字节[]的重载运算符
本文关键字:重载 运算符 字节 | 更新日期: 2023-09-27 18:21:39
我想重载<,><=并且>=C#中byte[]类型的操作数的运算符。所以我发现关于"一个二进制运算符的参数之一必须是包含类型"的错误是很难的。无论如何,我似乎无法从byte[]继承,也不想将byte[]封装在另一个类中(听起来开销太大)。有办法绕过它吗?也许使用扩展方法?还是完全疯了?
非常感谢。
没有真正的办法做到这一点。–Mehrdad Afshari
给定byte[] a, b
:
可以使用扩展方法将"wordy"运算符定义为a.GreaterThan(b)
,这实际上只是编写MyByteArray.GreaterThan(a, b)
的一种简单方法。
然而,如果表达式中的两个(可能是相同的)类型都不能修改为添加运算符,则不可能定义运算符。
不过,一个琐碎的包装器不会增加太多开销(或好处?):MyByteArray.Rich(a) > b
,其中Rich
返回了一个定义了>
运算符的类型。
隐式/显式强制转换也被取消,因为a
仍然无法修改,因为[自定义]强制转换是在源表达式上定义的,而不是在目标表达式上。