首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取所有Vector3类型变量(struct),并从整个代码中枚举它们。

获取所有Vector3类型变量(struct),并从整个代码中枚举它们。
EN

Stack Overflow用户
提问于 2014-06-25 22:34:05
回答 1查看 189关注 0票数 1

首先,这只是我对C#的“学习”,所以它不是家庭作业之类的(我在这里有一个问题,但我只是一个“狂热者”)。我正在尝试获取Vector3类型(struct)的所有值。我需要在我的代码中使用这样的东西:

代码语言:javascript
运行
复制
foreach (Vector3 vector in Vector3.GetVector3List()) //maybe Vector3.GetVector3List<Vector3>()
{
    Console.WriteLine(vector);          
}

它应该在控制台中编写由用户定义的所有向量。

我的结构的定义(简化):

代码语言:javascript
运行
复制
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函数,但从逻辑上讲,它不能列出所有的向量,因为它们是在用户没有在控制台中完成时才定义的。

代码语言:javascript
运行
复制
private static List<T> GetVector3List<T>()
{
    //T[] array = (T[]) Vector3.GetValues(typeof (T));
}

例如,一种方法是将所有输入的向量存储在列表中,然后将其存储到WriteLine中,但我想用另一种方式来实现。有人能给我个建议吗?我该怎么继续?(或者如果有可能只从struct获取所有向量)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-25 23:02:44

.NET中没有枚举类所有实例的功能。更糟糕的是,您选择了将其设置为struct,这使得这变得更加不可能,因为堆栈上可能存在结构类型的值,严格地说,枚举过程本身会产生新的值。

如果您使Vector3成为一个class,那么理论上您可以通过在构造函数中记录创建来跟踪它们,但在许多方面它并不简单。首先,你最好使用弱引用..。

严格地说,有一些调试API使这成为可能,但它们的使用并不简单,我也不确定一个程序是否能够在自己身上使用它们。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24419704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档