Perché dovrei usare var al posto di un tipo?

Possibile duplicato:
ReSharper e var

Dopo aver installato ReSharper richiede (con avvertimenti) che io uso var ogni volta che è ansible, per esempio

UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t; 

ReSharper vuole trasformarlo in

 var ue = (UnhandledExceptionEventArgs) t; 

Mi piace la prima versione, c’è qualche ragione per preferire var ? prestazioni migliori? nulla? o è solo uno stile di codice?

È davvero solo uno stile di codifica. Il compilatore genera lo stesso identico per entrambe le varianti.

Vedi anche qui per la domanda sul rendimento:

  • L’utilizzo di “var” influirà sulle prestazioni?

Quando dici “dagli avvertimenti” cosa intendi esattamente? Di solito l’ho visto dare un suggerimento che si potrebbe voler usare var, ma nulla di così duro come un avvertimento.

Non c’è differenza di prestazioni con var: il codice è compilato con lo stesso IL. Il potenziale vantaggio è nella leggibilità: se hai già reso il tipo di variabile cristallino sull’RHS dell’incarico (ad esempio tramite una chiamata di cast o di un costruttore), qual è il vantaggio di averlo anche sull’LHS? È una preferenza personale però.

Se non vuoi che R # suggerisca l’uso di var, modifica semplicemente le opzioni. Una cosa su ReSharper: è molto configurabile 🙂

In questo caso è solo lo stile di codifica.

L’uso di var è necessario solo quando si tratta di tipi anonimi.
In altre situazioni è una questione di gusti.

Come hanno detto gli altri, non c’è alcuna differenza nel codice compilato (IL) quando si utilizza uno dei seguenti elementi:

 var x1 = new object(); object x2 = new object; 

Suppongo che Resharper ti avverta perché è [secondo me] più facile leggere il primo esempio che il secondo. Inoltre, qual è la necessità di ripetere il nome del tipo due volte?

Considera quanto segue e otterrai ciò che intendo:

 KeyValuePair> y1 = new KeyValuePair>("key", new KeyValuePair("subkey", 5)); 

È molto più semplice leggere questo invece:

 var y2 = new KeyValuePair>("key", new KeyValuePair("subkey", 5));