首先,这只是我对C#的“学习”,所以它不是家庭作业或类似的东西(我在这里有问题,但我只是一个“狂热”)。我试图获得Vector3类型(struct)的所有值。我需要在我的代码中使用类似的东西:
foreach (Vector3 vector in Vector3.GetVector3List()) //maybe Vector3.GetVector3List<Vector3>()
{
Console.WriteLine(vector);
}
它应该在Console中编写用户定义的所有向量。
我的结构的定义(简化):
struct Vector3
{
private double x, y, z;
public double X
{
get { return x; }
set { x = value; }
}
public double Y
{
get { return y; }
set { y = value; }
}
public double Z
{
get { return z; }
set { z = value; }
}
public Vector3(double x, double y, double z) : this()
{
X = x;
Y = y;
Z = z;
}
}
我不确定我应该以哪种方式继续下去。我尝试过'类似enum的'Getvalues函数,但逻辑上它不能列出所有向量,因为它们没有定义,直到用户不在控制台中执行它。
private static List<T> GetVector3List<T>()
{
//T[] array = (T[]) Vector3.GetValues(typeof (T));
}
一种方法是将所有输入的矢量存储在List中,然后将WriteLine存储起来,但我想以其他方式执行。有人可以给我一个建议我该如何继续? (或者如果可以从结构中获取所有向量)
答案 0 :(得分:2)
.NET中没有设施来枚举类的所有实例。更糟糕的是,你选择使它成为struct
,这使得这更加不可能,因为堆栈上可能存在结构类型的值,严格来说,枚举过程本身会产生新的结构类型。
如果你使Vector3
成为class
,那么理论上你可以通过在构造函数中记录创建来跟踪它们,但它在许多方面都是非平凡的。对于初学者,你最好使用弱引用......
严格来说,有一些调试API可以实现这一点,但它们使用起来并不容易,而且我不确定程序是否可以自行使用它们。