C#-将结构存储在同一类型的结构中
本文关键字:结构 类型 存储 C#- | 更新日期: 2023-09-27 18:21:17
好的,
不可能将结构实例存储在同一类型的结构中。有人能帮我找到解决办法吗?
我需要将vector3存储在vector3中,如下所示:
public struct Vector3{
float x,y,z;
Vector3 normalized;
}
显然,它创造了一个无休止的循环,就像一个人会创造一个新的循环,创造一个全新的循环,等等…
那么我们该怎么做呢?我需要我的规范化为Vector3,因为它需要被识别为这样的,并且不能是任何其他命名。
最后,我知道这可以通过上课来实现,但我不想。
感谢
结构是一种值类型。声明递归结构将创建一个无限大的结构!解决方法是将其声明为类。但在这里,我只简单地将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);
}
}
}
您不能将X类型的结构存储在X类型的组织中。但是,您可能无论如何都不想这样做,因为通常,结构(和类)应该只存储它们需要完成的数据。相反,您可以使用一个函数来构建并返回结构的"规范化"版本:
public struct Vector3
{
float x,y,z;
public Vector3 Normalized
{
get
{
... build the normalized struct and return it ...
}
}
}