字节[]的重载运算符

本文关键字:重载 运算符 字节 | 更新日期: 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仍然无法修改,因为[自定义]强制转换是在源表达式上定义的,而不是在目标表达式上。