список? толковый словарь? массив? - PullRequest
0 голосов
/ 01 декабря 2009

Я пытаюсь придумать очень простой способ сохранить логическое значение для каждой вкладки в tabcontrol. на каждой странице есть текстовое поле, и я хотел бы сохранить страницу bool foreach, чтобы при сохранении вкладки 1 для bool1 было установлено значение true, в противном случае - false и т. д.

затем, когда они закрывают программу, она перебирает все вкладки и видит, сохранена ли каждая вкладка или нет. мне нужно иметь возможность создавать какой-то список, который я могу искать и манипулировать им.

Я ранее использовал свойства тега для этого, но по какой-то причине он больше не работает НЕПРАВИЛЬНО.

любой совет помощи будет очень полезен;)

спасибо,

Баел.

Ответы [ 4 ]

4 голосов
/ 01 декабря 2009

Ни массив, ни список, ни словарь не являются правильной структурой данных для отслеживания логического состояния набора объектов. Структура, которая делает это и ничего более - HashSet<T>. Либо T есть в наборе, либо нет.

Он превосходит Dictionary<T, bool>, потому что фактически поддерживает два состояния: находится ли объект в словаре или нет, и если это так, является ли его значение истинным или ложным.

Он превосходит List<T> по двум причинам: он быстрее (хотя в вашем случае это почти наверняка будет незначительным), и это не означает, что есть какой-то смысл в порядке объектов, которые он содержит, так как порядок объектов в HashSet<T> произвольный.

4 голосов
/ 01 декабря 2009

List<TabPage>

Храните только те вкладки, которые необходимо сохранить. Если пусто, ничего не нужно сохранять.

4 голосов
/ 01 декабря 2009

Вы можете использовать, например, Dictionary<TabPage,bool>. В начале вашего приложения:

var pageStates=new Dictionary<TabPage,bool>();

foreach(var page in tabControl.TabPages) {
    pageStates.Add(page, false);
}

Чтобы изменить состояние вкладки:

pageStates[page]=true;

А когда ваше приложение завершится:

foreach(var page in TabControl.TabPages) {
    if(pageStates[page]) {
        //The page is saved
    }
}
1 голос
/ 01 декабря 2009

Если вы выполняете итерацию без удаления или добавления элементов, используйте массив.

Если вы выполняете итерацию, но добавляете и удаляете элементы, используйте Список.

Если вы используете строки в качестве ключей, используйте словарь.

Словарь имеет очень высокую производительность поиска с большим количеством элементов по сравнению со списком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...