Devo usare una classe o un dizionario per archiviare i valori dei moduli

6

Sto lavorando su un'applicazione C # .NET, dove ho un modulo con molti controlli. Ho bisogno di eseguire calcoli a seconda dei valori dei controlli. Pertanto, ho bisogno di passare i valori Form a una funzione e all'interno di quella funzione, verranno chiamate diverse funzioni di supporto a seconda dell'elemento Control.

Ora, posso pensare a due modi per passare tutti i valori del Form:

i) Salva tutto in un dizionario e passa il dizionario alla funzione o ii) Avere una classe con attributi che corrisponde a ciascun elemento Form.

Quale di questi due approcci, o qualsiasi altro, è migliore?

    
posta Shamim Hafiz 01.02.2011 - 08:29
fonte

2 risposte

4

Se gli attributi che stai tracciando sono noti in anticipo, allora una classe è la strada da percorrere.

Se gli attributi che stai tracciando non sono noti in anticipo (e quali verranno enumerati più avanti in seguito ed elaboreranno tutti i valori qualunque essi siano), quindi un dizionario < > ti dà più flessibilità. Ciò vale anche se la funzione viene utilizzata per elementi su pagine diverse che hanno diversi tipi di attributi (consentendo di riutilizzare la funzione più facilmente).

Puoi anche considerare un approccio ibrido:

  1. Avere una classe che contiene alcuni attributi che conosci e ha una collezione Dictionary che può essere utilizzata per archiviare un po 'di overflow.
  2. Crea un enum che memorizza i nomi degli elementi che stai monitorando, quindi utilizza enum come Key per Dictionary .
risposta data 01.02.2011 - 08:45
fonte
4

Usa una classe. Non solo la classe può contenere i dati ma potrebbe anche memorizzare le operazioni che funzionano su quei dati. Con un dizionario, dovrai sincronizzare il codice che scrive nel dizionario con il codice che legge da esso. Soprattutto con un gran numero di campi, questo può diventare complicato. Mentre con una classe, il compilatore verifica i nomi dei campi per te.

    
risposta data 01.02.2011 - 08:36
fonte

Leggi altre domande sui tag