2012-04-26 19 views
8

Si tratta di una pratica comune di utilizzare C# di tipo alias al posto del CTS del sistema. * Tipi (int invece di Int32 e string invece di String). Tuttavia non mi è chiaro cosa usare per chiamare un metodo statico di un tipo in questo caso: un alias o un tipo di sistema.Int32.Parse vs int.Parse

Microsoft non sembra definire alcuna guida per utilizzare alias al posto dei tipi di sistema. Ma negli alias MSDN vengono utilizzate le variabili e gli equivalenti CTS vengono utilizzati per le chiamate statiche. Ad esempio MSDN: Parsing Numeric Strings

int number; 
Int32.TryParse(value, out number); 

StyleCop definisce invece in SA1121 - usare sempre alias. Quindi int.Parse va bene mentre lo Int32.Parse non lo è.

Questa domanda è una questione di stile (secondo me). Ma non capisco i motivi per usare il tipo CTS per le chiamate statiche.

+0

Vorrei secondo suggerimento di StyleCop. –

risposta

8

Personalmente utilizzo sempre nomi di classi completi per le chiamate al metodo statico. Ciò sottolinea il fatto che sono in realtà classi che contengono pezzi di codice invece di dati (primitivi) il più semplici possibili che gli alias implicano.

Uso sempre gli alias per le variabili.

+1

Ho revisionato le mie domande e ho scoperto che non era accettato. La tua risposta dà la ragionevole spiegazione di fare 'Int32.Qualcosa '. Anche se preferisco l'altro modo :) – Mike

4

Non c'è assolutamente alcuna differenza tecnica, solo lo stile di codifica. Personalmente sostengo lo int.Parse, ma ci sono molti ben noti experts che preferiscono il contrario.

+0

Preferisco 'Int32.Parse', tuttavia non sono esperto. :) – Default

+1

@Default No, non sei solo noto. :-) – LarsTech

+0

Sarei interessato a qui qual è il ragionamento dietro l'utilizzo dell'alias. Conosco il ragionamento alla base dell'uso dei nomi completi (vedi la mia risposta) ma non ho mai sentito il ragionamento per gli alias. – Stilgar

1

vi consiglio caldamente di utilizzare int.Parse(...) invece di int32 .Se immagine qualcuno leggere il codice in esecuzione su macchine a 64 bit, ed è probbale che egli non è a conoscenza di che int32 e int sono solo alias, lo farà fargli fare delle ipotesi errate.

In altre parole, anche se dal punto di vista funzionale non v'è alcuna differenza, per evitare ambiguità nel codice (referencies a presumibilmente codice a 32 bit) suggerirei usare int.Parse(..)

+0

Questo non ha alcuna relazione con i metodi statici poiché la dimensione dei dati è correlata alla variabile non alla chiamata al metodo. In effetti puoi fare long i = int.Parse (...). Inoltre, come giustificheresti String.IsNullOrEmpty vs string.IsNullOrEmpty? – Stilgar

+0

@Stilgar: Non sto parlando dei dati in nessuna sua rappresentazione. Sto parlando di ** solo ** il nome: int32 versus int. Le variabili, le dimensioni della variabile, i tipi di accesso e tutte le altre cose non sono correlate a questo post. – Tigran

Problemi correlati