0

Ok、

構造体インスタンスを同じ型の構造体内に格納することはできません。誰でも回避策を見つけるのを手伝ってもらえますか?

次のように vector3 内に vector3 を格納する必要があります。

public struct Vector3{
   float x,y,z;
   Vector3 normalized;
}

明らかに、新しいサイクルを作成して新しいサイクルを作成するように、それは無限のサイクルを作成します...

では、どうやってそれを行うのでしょうか?Vector3 として認識される必要があり、他の名前にすることはできないため、正規化して Vector3 にする必要があります。

最後に、これはクラスで達成できることを知っていますが、私は望んでいません。

ありがとう

4

2 に答える 2

2

さて、構造体は値型です。再帰的な構造体を宣言すると、無限に大きな構造体が作成されます! 回避策は、代わりにクラスとして宣言することです。しかし、ここでは単純にプロパティとして宣言Normalizedします。

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

    public float X { get; private set; }
    public float Y { get; private set; }
    public float Z { get; private set; }

    public float Length {
        get { return (float)Math.Sqrt(X * X + Y * Y + Z * Z); }
    }

    Vector3 Normalized {
        get {
            float l = Length;
            return new Vector3(X / l, Y / l, Z / l);
        }
    }
}
于 2013-07-07T16:34:37.343 に答える