【问题标题】:Add a negative operator(?) to a class in C#向 C# 中的类添加否定运算符(?)
【发布时间】:2013-01-26 21:11:13
【问题描述】:

我可能在这里没有使用正确的词,这可能是我无法自己找到答案的原因。我的班级中有一个 + & - 运算符,但我想添加一个否定运算符...我基本上能够做到这一点:

myMethod(myClass, -myClass);

如果您需要代码示例来帮助我,请告诉我,但我认为这应该是非常困难的......或者它无法完成。

【问题讨论】:

  • 这个否定运算符应该做什么?
  • 如果您要重载一元减号运算符,最好也重载一元加号运算符。我知道它是世界上最没用的运算符,但能说 -foo 而不是 +foo 也很奇怪。
  • 仅仅因为你可以 - 并不意味着你应该。你为什么要这么做?
  • 也许值得注意的是托管 DirectX 将 Vector3 定义为 struct 而不是 class。您可能希望在实施时考虑这一点。

标签: c# operators


【解决方案1】:

当然,一元 - 运算符 is overloadable

public static MyClass operator -(MyClass myClass)
{
    ...
}

注意不要滥用这些功能,因为消费者可能不知道这些运算符的语义 - 与方法不同(可以很好地命名),类型上的自定义运算符的作用通常不是很明显。希望您的类代表某种或类似的向量?

【讨论】:

  • 太棒了...但现在我觉得自己很笨。我应该知道的;甚至没有考虑创建只有 1 个参数的运算符。谢谢!
  • 也感谢您提供的额外提示。这是一个包含一组 3 个整数的类;所以负数只会翻转这些值的符号。
【解决方案2】:
public static YourClass operator -(YourClass value)
{
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多