Sono venuto da uno sfondo C ++ e sto facendo di tutto C # nel mio attuale lavoro e ho appena letto molto Q & A su quale sia la differenza tra campi pubblici e proprietà e tutto il back and forth in variazioni e incarnazioni di questa domanda di base (ad es. questo post SO e tutte le relative domande collegate ). Tutte queste domande sono affrontate in termini di differenze pratiche che danno per scontata l'esistenza di un sistema di proprietà, ma penso che sarebbe opportuno affrontare questo argomento in termini di ciò che i progettisti di tutte le lingue che hanno deciso di supportare proprietà nel primo luogo pensavo (controlla la lista nell'articolo di Wikipedia qui ). Come OOP si è evoluto da C ++ / Java per estendersi a ciò che l'articolo di Wikipedia identifica in modo interessante come una via di mezzo tra metodi e dati dei membri:
"That is, properties are intermediate between member code (methods) and member data (instance variables) of the class, and properties provide a higher level of encapsulation than public fields."
MSDN aggiunge ulteriore background:
"Although properties are technically very similar to methods, they are quite different in terms of their usage scenarios. They should be seen as smart fields. They have the calling syntax of fields, and the flexibility of methods."
Mi piacerebbe sapere come è arrivato che questo livello intermedio di incapsulamento si è dimostrato utile per la programmazione in generale. Presumo che questo concetto non fosse presente alla prima incarnazione dei linguaggi di programmazione che esprimeva il paradigma OOP.