首先,这只是我对C#的“学习”,所以它不是家庭作业之类的(我在这里有一个问题,但我只是一个“狂热者”)。我正在尝试获取Vector3类型(struct)的所有值。我需要在我的代码中使用这样的东西:
foreach (Vector3 vector in Vector3.GetVector3List()) //maybe Vector3.GetVector3List<Vector3>()
{
Console.WriteLine(vector);
}它应该在控制台中编写由用户定义的所有向量。
我的结构的定义(简化):
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;
}
}我不知道该以哪种方式继续下去。我尝试过“类似枚举”的Getvalue函数,但从逻辑上讲,它不能列出所有的向量,因为它们是在用户没有在控制台中完成时才定义的。
private static List<T> GetVector3List<T>()
{
//T[] array = (T[]) Vector3.GetValues(typeof (T));
}例如,一种方法是将所有输入的向量存储在列表中,然后将其存储到WriteLine中,但我想用另一种方式来实现。有人能给我个建议吗?我该怎么继续?(或者如果有可能只从struct获取所有向量)
发布于 2014-06-25 23:02:44
.NET中没有枚举类所有实例的功能。更糟糕的是,您选择了将其设置为struct,这使得这变得更加不可能,因为堆栈上可能存在结构类型的值,严格地说,枚举过程本身会产生新的值。
如果您使Vector3成为一个class,那么理论上您可以通过在构造函数中记录创建来跟踪它们,但在许多方面它并不简单。首先,你最好使用弱引用..。
严格地说,有一些调试API使这成为可能,但它们的使用并不简单,我也不确定一个程序是否能够在自己身上使用它们。
一篇关于为什么检索一个类型的所有实例是个坏主意。的奖金文章。
https://stackoverflow.com/questions/24419704
复制相似问题