gpt4 book ai didi

c# - 如何在 C# 中更正规则 'Operator overloads have named alternates'

转载 作者:行者123 更新时间:2023-11-30 15:01:54 26 4
gpt4 key购买 nike

由于运算符重载(operator> 和 operator<)违反了规则 Operator overloads have named alternates ,运算符 > 和 < 需要一个替代方法 Compare,但是,由于只能有一个 Compare 方法,该方法的签名应该是什么?

例如,我有:

public static bool operator >(XXX lhs, XXX rhs)

public static bool operator <(XXX lhs, XXX rhs)

如何提供一个比较方法,使其与大于和小于运算符的行为相同?

编辑:

int Compare() 只返回正数(大于)、负数(小于)和 0(等于),那么在我的重载运算符中有一个 >= 运算符,这意味着我的比较方法也应该处理(大于或等于)sinario

如果有 >、< >= 和 <= 四个重载运算符呢?

最佳答案

public static int Compare(XXX lhs, XXX rhs);

返回值:

  • 小于零
    lhs 小于 rhs

  • lhs 等于 rhs
  • 大于零
    lhs 大于 rhs

示例:

用法:

// operator            // named alternative
x < y Compare(x, y) < 0
x <= y Compare(x, y) <= 0
x > y Compare(x, y) > 0
x >= y Compare(x, y) >= 0

实现 IComparable<T>这也是一个好主意。

关于c# - 如何在 C# 中更正规则 'Operator overloads have named alternates',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13400043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com