![](/img/trans.png)
[英]Sticking all variables in a struct under a class or leave them in the class?
[英]Get all Vector3-type variables (struct) and enumerate them from the whole code
首先,这只是我对C#的“学习”,因此它不是作业或类似的东西(我在这里遇到了问题,但我只是一个“狂热者”)。 我正在尝试获取Vector3类型(结构)的所有值。 我需要在代码中使用如下代码:
foreach (Vector3 vector in Vector3.GetVector3List()) //maybe Vector3.GetVector3List<Vector3>()
{
Console.WriteLine(vector);
}
它应该在控制台中写入用户定义的所有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;
}
}
我不确定应该继续哪种方式。 我尝试了“类似枚举”的Getvalues函数,但是从逻辑上讲,它不能列出所有向量,因为直到用户在控制台中不进行操作时它们才被定义。
private static List<T> GetVector3List<T>()
{
//T[] array = (T[]) Vector3.GetValues(typeof (T));
}
一种方法是例如将所有输入的向量存储在List中,然后对它们进行WriteLine,但是我想用另一种方式来做。 有人可以给我一个建议,我应该如何继续? (或者如果有可能仅从struct获取所有Vector)
.NET中没有设施来枚举类的所有实例。 更糟糕的是,您选择将其struct
为struct
,这使得它变得更加不可能,因为堆栈上可能存在struct类型的值,并且严格来说,枚举过程本身会产生新的值。
如果将Vector3
class
, Vector3
理论上讲可以通过在构造函数中记录创建来跟踪它们,但是在许多方面它都是不平凡的。 对于初学者,您最好使用弱引用...
严格来说,有调试API使之成为可能,但是使用它们并不容易,而且我不确定程序本身是否可以使用它们。
关于为什么检索类型的所有实例的奖励文章是个坏主意 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.