Lista? dicionário? array?
-
22-07-2019 - |
Pergunta
eu estou tentando chegar a uma maneira muito simples para armazenar um valor booleano para cada TabPage em um tabcontrol. cada página tem uma caixa de texto, e eu gostaria de armazenar uma página bool foreach por isso, se TabPage 1 foi salvo, então bool1 é definido como verdadeiro falso, mais, e assim por diante.
, em seguida, quando eles vão para fechar o programa vai passar por cima de todas as TabPages e ver se cada TabPage foi salvo ou não. eu preciso ser capaz de criar algum tipo de uma lista que eu possa pesquisar e manipular.
i já usou propriedades de tag para isso, mas, por alguma razão que não funciona corretamente mais.
qualquer conselho ajuda seria greatl; y apreciada:)
obrigado,
bael.
Solução
Nem array, nem lista, nem dicionário são a estrutura de dados certo para acompanhar o estado booleano de um conjunto de objetos. A estrutura que faz isso e nada mais é HashSet<T>
. Ou um T
está no conjunto, ou não é.
É superior a uma Dictionary<T, bool>
porque isso realmente mantém dois estados:. Se o objeto está no dicionário ou não, e se é, se o seu valor for true ou false
É superior a uma List<T>
por dois motivos: É mais rápido (embora no seu caso, que quase certamente será insignificante), e isso não implica que há algum significado para a ordem dos objetos que ela contém, desde o fim de objetos em um HashSet<T>
é arbitrária.
Outras dicas
List<TabPage>
loja apenas aqueles TabPage (s) que precisa ser salvo. Se vazio, não precisa de nada para ser salvo.
Você pode usar, por exemplo, um Dictionary<TabPage,bool>
. No início da sua aplicação:
var pageStates=new Dictionary<TabPage,bool>();
foreach(var page in tabControl.TabPages) {
pageStates.Add(page, false);
}
Para alterar o estado de um TabPage:
pageStates[page]=true;
E quando seus acabamentos de aplicação:
foreach(var page in TabControl.TabPages) {
if(pageStates[page]) {
//The page is saved
}
}
Se você é iteração através sem remover ou adicionar elementos usar o array.
Se você é iteração através mas adicionando e removendo elementos usar a lista.
Se você estiver usando cordas como chaves, em seguida, usar o dicionário.
O dicionário tem um desempenho muito rápido de pesquisa com um número elevado de elementos comparados com a lista.