Utilizzo di proprietà private nei campi C # vs

3

Molte persone seguono il seguente paradigma:

sono usate solo per esporre i campi, quindi dovrebbero essere solo pubbliche . Esistono numerose eccezioni a questa regola (caricamento lazy, ad esempio).

Con le proprietà automatiche, ho trovato che non è possibile usare mai i campi. Se ho bisogno che i miei campi siano molto semplici, uso solo le proprietà auto

private int? ThisIsMoreOrLessAField { get; set; } // Actually a private property

Che cosa è generalmente preferito? Ad alcune persone piacciono i campi perché se qualcuno decide di cambiare un campo e renderlo pubblico, è ovviamente un codice cattivo e facilmente riconoscibile nella revisione del codice. È anche facile guardare i campi e riconosciuto che è privato per la classe. Se le tue proprietà possono essere private, questo rompe quel paradigma. Devi fare ulteriori controlli per determinare se è pubblico o privato.

Sto attraversando un periodo difficile per convincermi in ogni caso.

    
posta Triplell89 06.04.2018 - 04:30
fonte

1 risposta

4

Come ha detto Robert Harvey, ciò che è generalmente preferito è usare i campi per ciò per cui sono progettati (stato privato), e usare le proprietà per quello per cui sono progettate (esporre una API pubblica).

Le due eccezioni che trovo nella pratica sono:

  • Campi derivati, dove fai un po 'di matematica su get e set. Certo, potresti usare get e impostare funzioni, ma se volessi scrivere Java, userei Java.
  • Situazioni in cui è necessario tenere traccia o attivare eventi quando i campi vengono modificati. Un semplice esempio è la registrazione quando un campo viene modificato o il conteggio quando si accede a qualcosa. Immagino che non succeda spesso nelle app di tipo business-line, ma può essere comune se stai facendo qualcosa come parlare con un dispositivo hardware in cui nascondi molti dettagli dietro l'interfaccia, ma serve per tenere traccia di questi campi nel tempo per il debug.

Si noti in questi esempi qualcos'altro accade oltre a un get o un set quando vengono utilizzate le proprietà. Le proprietà in C # sono fondamentalmente snelle sintassi che avvolge getVar () e setVar () come visto in Java e COM. In C #, forniscono i mezzi per introdurre qualche logica quando vengono utilizzate le proprietà, ma per essere altrimenti trattate come una variabile ordinaria.

Se hai solo una variabile senza logica sul set o ottieni, usa un campo.

    
risposta data 06.04.2018 - 05:01
fonte

Leggi altre domande sui tag