使用课程' "指数&#34 ;?

时间:2017-03-28 14:16:29

标签: c#

如何使用X,Y和Z坐标编写代码以添加两个向量a,b。 下面的代码显示了我确切到达的地方。

        public Vector(float _x, float _y, float _z)
    {
        float X, Y, Z;
        X = _x;
        Y = _y;
        Z = _z;
        Vector _vector = new Vector(X, Y, Z);
    }

    public static Vector operator +(Vector _a, Vector _b)
    {
        return new Vector();    //_a.X + _b.X , _a.Y + _b.Y, _a.Z + _b.Z
    }

2 个答案:

答案 0 :(得分:6)

根据传入参数创建属性。然后你可以在班上的任何地方使用它们:

public class Vector
{
    public float X { get; set; }
    public float Y { get; set; }
    public float Z { get; set; }

    public Vector(float _x, float _y, float _z)
    {
        X = _x;
        Y = _y;
        Z = _z;
    }

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

答案 1 :(得分:2)

public struct Vector
{
    public float X { get; }
    public float Y { get; }
    public float Z { get; }

    public Vector(float x, float y, float z)
    {
        X = x;
        Y = y;
        Z = z;
    }

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

注意:

  • 好像你不明白局部变量和类字段/属性之间的区别。在方法或构造函数中声明变量时 - 这些变量及其值将在方法调用后消失。在类/结构体中声明变量时,这些值将在对象生存期内可用。
  • 好像你不明白构造函数的目的。它不是用于创建类型的新实例 - 它是用于初始化已创建的实例。您的当前代码将因StackOverflow异常而失败,因为调用构造函数来初始化新Vector实例的值。如果在构造函数中创建新的Vector实例,则将调用构造函数来初始化该新实例。等等直到例外。
  • 不要在变量或参数名称中使用奇怪的下划线。