c# - byte[] 的重载运算符

标签 c# operator-overloading

我想在 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/

相关文章:

c# - 承担多种角色的自定义 CodeAccessSecurityAttribute

c++ - 这是 C++ 链表的深层复制和正确实现的 = 运算符吗?

c++ - 如果我重载了 <,我们是否需要重载 == 运算符?

c++ - (++i) 和 (i++) 的区别

c++ - 类和运算符

c++ - 命名空间中模板运算符的重载解析

c# - 登录asp.net core后访问用户声明

c# - 给定起点、终点和(圆的)中心点找到圆弧的中点

c# - Asp.net 核心 2.0 与 Entity Framework 数据库首先方法与 MYSQL

c# - 同步时间 C#