Quando apprendo C # (e concetti OO più in generale allo stesso tempo) qualcosa che ho trovato molto distraente è esemplificato dalla seguente riga:
ExampleClass exampleObject = new ExampleClass();
È l'apparente ripetizione ridondante che mi ha infastidito. Qualche luce è emersa quando ho colto la differenza tra dichiarare una variabile e assegnargli un valore o riferimento (e che questi processi possono essere separati). Tuttavia, l'utilizzo di cui sopra è estremamente comune.
Ovviamente, ho imparato a conviverci (e non mi aspetto che la sintassi di C # possa cambiare!), ma mi sono chiesto se c'è un modo migliore. Ci sarebbe qualche merito in quanto segue:
exampleObject = new ExampleClass();
Dove la variabile exampleObject è strongmente digitata come ExampleClass quando non è specificata?
EDIT [dopo che i commentatori hanno sottolineato l'ambiguità di cui sopra tra una dichiarazione di una nuova e un'assegnazione di una variabile esistente:]
Un'ipotetica sintassi abbreviata alternativa, che evita l'ambiguità di dichiarazione / assegnazione, è:
ExampleClass exampleObject = new();
... dove ciò creerebbe una nuova istanza di ExampleClass , il tipo essendo stato specificato nella dichiarazione della sua variabile di riferimento, exampleObject .
.. ma sono sicuro che questo apre altri problemi a cui non ho pensato!
/ Modifica
Ovviamente, se per qualche motivo volessimo che exampleObject fosse di tipo Object , o - un requisito più comune - che fosse del tipo di una classe genitore di ExampleClass , dovremmo specificare questi tipi di fronte del nome della variabile nel modo standard, ma c'è qualche inconveniente alla mia stenografia suggerita in questo scenario molto comune?