384 messaggi dal 26 agosto 2007
Ciao a tutti,
che differenza c'è nel definire una proprietà in questi due modi?

public bool Prova { get; set; }

private bool _Prova;

public bool Prova
{
    get
    {
        return _Prova;
    }
    set
    {
        _Prova = value;
    }
}

Lunga vita e prosperità!!
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
sono equivalenti, perché il primo esempio verrà trasformato nel secondo dal compilatore, che aggiungerà un backing field come il tuo _Prova.

Il primo approccio, quello delle autoimplemented properties è più conciso da scrivere per lo sviluppatore ed è utile giusto quando si vuole esporre una proprietà senza volerne regolare la logica di lettura e scrittura.

Il secondo approccio, invece, è l'unico che ti permette di ridefinire quella logica.

In entrambi i casi puoi usare dei modificatori di accesso come private e protected per impedire che si possa scrivere sulla proprietà. Per esempio:
public bool Prova { get; private set; }


ciao,
Moreno
Modificato da BrightSoul il 28 maggio 2015 07.53 -

Enjoy learning and just keep making
384 messaggi dal 26 agosto 2007
Grazie mille per la spiegazione!!!

Lunga vita e prosperità!!
1.509 messaggi dal 27 dicembre 2005
BrightSoul ha scritto:
Ciao,
sono equivalenti, perché il primo esempio verrà trasformato nel secondo dal compilatore, che aggiungerà un backing field come il tuo _Prova.

Il primo approccio, quello delle autoimplemented properties è più conciso da scrivere per lo sviluppatore ed è utile giusto quando si vuole esporre una proprietà senza volerne regolare la logica di lettura e scrittura.

Il secondo approccio, invece, è l'unico che ti permette di ridefinire quella logica.

In entrambi i casi puoi usare dei modificatori di accesso come private e protected per impedire che si possa scrivere sulla proprietà. Per esempio:
public bool Prova { get; private set; }


ciao,
Moreno
Modificato da BrightSoul il 28 maggio 2015 07.53 -


Io direi il secondo approccio è da usare quando magari nel set o get devi compiere qualche operazione prima di mostrare il dato.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.