繁体   English   中英

获取所有Vector3类型的变量(结构)并从整个代码中枚举它们

[英]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中没有设施来枚举类的所有实例。 更糟糕的是,您选择将其structstruct ,这使得它变得更加不可能,因为堆栈上可能存在struct类型的值,并且严格来说,枚举过程本身会产生新的值。

如果将Vector3 classVector3理论上讲可以通过在构造函数中记录创建来跟踪它们,但是在许多方面它都是不平凡的。 对于初学者,您最好使用弱引用...

严格来说,有调试API使之成为可能,但是使用它们并不容易,而且我不确定程序本身是否可以使用它们。

关于为什么检索类型的所有实例的奖励文章是个坏主意

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM