确定,
无法在同一类型的结构中存储结构实例。那么有人可以帮我找一个解决方法吗?
我需要将vector3存储在vector3中,如下所示:
public struct Vector3{
float x,y,z;
Vector3 normalized;
}
显然,它创造了一个无休止的循环,因为人们会创造一个新的创造一个新的等等......
那怎么会这样呢?我需要将我的规范化为Vector3,因为它需要被识别,并且不能是任何其他命名。
最后,我知道这可以通过课程实现,但我不想要。
谢谢
答案 0 :(得分: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);
}
}
}
答案 1 :(得分:1)
你不能在X类型的结构中存储X类型的结构。但是,你可能不想这样做,因为一般,结构(和类,就此而言) )应该只存储他们需要完成的数据。相反,您可以拥有一个构建并返回结构的“规范化”版本的函数:
public struct Vector3
{
float x,y,z;
public Vector3 Normalized
{
get
{
... build the normalized struct and return it ...
}
}
}