Может ли список <type>иметь имена или есть способ иметь «гибкое» свойство? - PullRequest
0 голосов
/ 02 января 2019

Я работаю в трехмерном пространстве (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

Есть ли способ присвоения имен элементам списка или способ сделать свойство «гибким», вроде именованного кортежа?

1 Ответ

0 голосов
/ 02 января 2019

Tree.MinMax может быть Dictionary<string, MinMax>.

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

Чтобы добавить пару ключ-значение (или, по вашим словам, «гибкое свойство»),

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

Затем вы можете получить доступ к свойству следующим образом:

MinMax["Y"]

Это выдаст KeyNotFoundException, если ключ не существует.

...