Kein Mensch braucht die. Sie haben keinen Mehrwert und eigentlich nur Nachteile.
"Brauchen" ist Relativ. Nein, sie sind (bis auf Published-Eigenschaften) nirgendwo zwingend notwendig. Aber sie verkürzen Code enorm und machen ihn an vielen Stellen übersichtlicher, und vereinfachen gleichzeitig die Zugriffsbeschränkung auf private Member.
Die Code-Vervollständigung gibt dir keine Auskunft ob eine Property nur les-, nur schreibbar oder beides ist.
Das ist richtig, aber kein Problem der Properties sondern ausschließlich eines der Code-Vervollständigung.
Du kannst Properties nicht als var
- oder out
-Parameter übergeben.
Ja, logischerweise kannst du das nicht. Wie soll das denn auch funktionieren? Es sind ja keine Variablen, sondern müssen zu Funktionen/Prozeduren kompatibel sein. Keine Ahnung wie du dir da vorstellst, dass man sie übergeben können soll.
Das sieht man z.B. auch daran dass Sprachen wie Java keine Entsprechung zu Delphi-Properties haben da man wohl gemerkt hat dass man mit einer einfachen Variable oder getXXX() und setXXX()-Methoden besser fährt.
"Sprachen wie Java" haben das. Nur halt Java (als so ziemlich einzige Sprache, die mir jetzt spontan einfällt) hat das nicht. C#, C++ und sogar JavaScript haben sehr wohl Eigenschaften, die mehr oder weniger genau wie in Delphi funktionieren.