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?