我在 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/