2012-04-26 29 views
8

Es una práctica común el uso de C alias # tipo en lugar de Sistema de CTS. * Tipos (int en lugar de Int32 y string en lugar de String). Sin embargo, no tengo claro qué usar para llamar a un método estático de un tipo en este caso: un alias o un tipo de sistema.Int32.Parse vs int.Parse

Microsoft no parece definir ninguna directriz para usar alias en lugar de tipos de sistema. Pero en MSDN los alias se usan para variables y los equivalentes CTS se usan para llamadas estáticas. Por ejemplo MSDN: Parsing Numeric Strings

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

StyleCop define el contrario en SA1121 - siempre usar alias. Entonces, int.Parse está bien, mientras que Int32.Parse no.

Esta pregunta es una cuestión de estilo (en mi opinión). Pero no entiendo las razones para usar el tipo de CTS para llamadas estáticas.

+0

lo haría segunda sugerencia de StyleCop. –

Respuesta

8

Personalmente siempre uso nombres de clase completa para llamadas de método estático. Esto subraya el hecho de que en realidad son clases que contienen fragmentos de código en lugar de los datos más simples posibles (primitivos) que implican los alias.

Siempre uso alias para las variables.

+1

He estado revisando mis preguntas y he encontrado que esto no fue aceptado. Tu respuesta da la explicación razonable para hacer 'Int32.Algo'. Aunque prefiero el otro camino :) – Mike

4

No hay absolutamente ninguna diferencia técnica, solo el estilo de codificación. Personalmente defiendo int.Parse, pero hay muchos conocidos experts que prefieren lo contrario.

+0

Prefiero 'Int32.Parse', sin embargo, no soy un experto. :) – Default

+1

@Default No, usted no es muy conocido. :-) – LarsTech

+0

Me interesaría saber cuál es el razonamiento detrás del uso del alias. Conozco el razonamiento detrás de usar nombres completos (ver mi respuesta) pero nunca escuché el razonamiento para los alias. – Stilgar

1

me sugieren fuertemente utilizar int.Parse(...) en lugar de int32 .Si immagine alguien leer el código que se ejecuta en la máquina de 64 bits, y es probbale que no es consciente de que int32 y int son sólo alias, lo hará hacer que haga suposiciones equivocadas.

En otras palabras, aunque desde el punto de vista funcional, no hay ninguna diferencia, para evitar la ambigüedad en el código (referencies a suponer que el código de 32 bits) sugeriría a utilizar int.Parse(..)

+0

Esto no muestra ninguna relación con los métodos estáticos ya que el tamaño de los datos está relacionado con la variable y no con la llamada al método. De hecho, puedes hacer mucho i = int.Parse (...). Además, ¿cómo justificaría String.IsNullOrEmpty versus string.IsNullOrEmpty? – Stilgar

+0

@Stilgar: No estoy hablando de los datos en ninguna de sus representaciones. Estoy hablando de ** solo ** el nombre: int32 versus int. Las variables, los tamaños de variable, los tipos de acceso y todo lo demás no están relacionados con esta publicación. – Tigran