c# - List<type> 可以有名称吗?有没有办法拥有 "flexible"属性?

标签 c# list properties tuples

我在 3D 空间(X、Y、Z)中工作。

我有一个 KDTree(感谢 Accord.Net),我继承并添加了一个属性,该属性具有每个维度的最大值和最小值。我编写了一个构造函数,它从列表中添加值并同时获取最小值和最大值。

树(在我的例子中)可以是 1、2 或 3 维。

如果树只有一维(X 轴),我希望有一个如下所示的属性:

Tree.MinMax.X.Min
Tree.MinMax.X.Min

如果我的树有两个维度(比如 Y 和 Z),那么该属性将如下所示:

Tree.MinMax.Y.Min
Tree.MinMax.Y.Min
Tree.MinMax.Z.Min
Tree.MinMax.Z.Min

我目前拥有的是一个列表。无法命名列表中的每个项目(据我所知)。

class MinMax
{
    internal double Min = double.MaxValue;
    internal double Max = double.MinValue;

    internal void Add(double value)
    {
        Min = msf.Min(Min, value);
        Max = msf.Max(Max, value);
    }
}

这给了我以下语法(很难理解):

Tree.MinMax[0].Min
Tree.MinMax[0].Max

有没有一种方法可以命名列表元素,或者有一种方法可以使属性“灵活,有点像命名的元组?”

最佳答案

Tree.MinMax可以是 Dictionary<string, MinMax> .

public Dictionary<string, MinMax> MinMax = new Dictionary<string, MinMax>();

要添加一个键值对(或者用你的话来说,一个“灵活的属性”),

MinMax.Add("Y", new MinMax());

然后您可以像这样访问该属性:

MinMax["Y"]

这将抛出 KeyNotFoundException如果 key 不存在。

关于c# - List<type> 可以有名称吗?有没有办法拥有 "flexible"属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53999923/

相关文章:

c# - 使用 lambda 语法的 linq 连接运算符类型

java - 如何访问user.home目录中的属性文件?

c# - 将通用列表转换为 CSV 字符串

c# - 将日期时间转换为字符串时出错

c# - "System.Data.OleDb.OleDbException: ' INSERT INTO 语句中的语法错误。 '"

python-3.x - 在 python 3 中编辑列表的元素

C 列表段错误

list - 具有隐式顺序 lisp 的平面无序列表和元组

javascript - 如何从对象内部获取属性名称以创建新的属性名称?

objective-c - 使用字典值动态填充对象属性