【问题标题】:Specific form of Constructor in C#C#中构造函数的具体形式
【发布时间】:2009-01-26 17:46:59
【问题描述】:

我正在学习 ICT。我的一门课程是 C#,另一门是物理。 我们的物理老师使用 Visual Studio 为一些动作制作动画,给了我们一些他用来做的代码。他告诉我们查一下。这是我不认识的东西:

public static Vector operator + (Vector v1, Vector v2)
{
    return new Vector(v1.X + v2.X, v1.Y + v2.Y, v1.Z + v2.Z);
}

这应该是一个构造函数,但我以前从未见过这样的东西。 我不知道它叫什么,所以我不知道谷歌是为了什么。

有人可以请教我吗?

【问题讨论】:

    标签: c# visual-studio constructor


    【解决方案1】:

    这就是所谓的“运算符重载”。它不是构造函数,而是返回一个新的 Vector。

    见: Operator Overloading

    【讨论】:

      【解决方案2】:

      它不是构造函数。它是“+”运算符的运算符方法。它定义了当您执行以下操作时会发生什么:-

      var Vector v1 = new Vector(1,2,3);
      var Vector v2 = new Vector(1,2,3);
      var Vector v3 = v1 + v2;
      

      【讨论】:

      • 不知何故我知道我永远不会得到第一个答案,它总是会被轰炸;-)
      【解决方案3】:

      这会重载 Vector 类的“+”运算符,因此无论何时执行“v1 + v2”,代码都会被执行。

      【讨论】:

        【解决方案4】:

        他正在重载 Vector 类的“+”运算符。有关该主题的更多信息,请参阅here

        【讨论】:

          【解决方案5】:

          这不是构造函数,而是 + 的运算符重载 这就是您重载行为的方式:

          Vector a = new Vector();
          Vector b = new Vector();
          Vector c = a + b;
          

          更多信息请访问MSDN article

          【讨论】:

            【解决方案6】:

            线:

            公共静态向量运算符 + (Vector v1, Vector v2)

            ...不是构造函数。它只是为父类重载了 + (Plus) 运算符。我假设父类是一个细化的向量类?

            行:

            返回新向量(v1.X + v2.X, v1.Y + v2.Y, v1.Z + v2.Z);

            ...正在使用 Vector 类的构造函数来传递三个参数(X、Y 和 Z 看起来像)

            【讨论】:

              【解决方案7】:

              它是重载的 + 运算符。所有 OOP 语言(可能除了 Java,需要检查参考)都允许运算符重载。

              【讨论】:

                【解决方案8】:

                他确实重载了 + 运算符。

                这是什么意思? 很简单:

                如果你有这个:

                int i = 10;
                int j = 20;
                int x = i + j;
                

                在本例中,x 为 30,因为 C# 知道我们是否使用整数并使用 + 来求和。

                但现在您正在使用向量。 一个 3 维向量有 3 个值:X、Y 和 Z。 如果您想要两个向量的总和,您将如何工作? 是不是像

                v1.X + v2.Y and v1.Y + v2.Z and v1.Z + v2.X  
                

                或者 C# 应该这样做:

                v1.X + v1.Y and v1.Z + v2.X and v2.Y + v2.Z
                

                通过运算符重载,您可以定义在使用向量时应该如何实现 + 运算符。 在我们的例子中是:

                v1.X + v2.X and v1.Y + v2.Y and v1.Z + v2.Z 
                

                没那么难;)

                【讨论】:

                  猜你喜欢
                  • 2017-06-17
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-08-29
                  相关资源
                  最近更新 更多