2008-09-22 10 views
17

En C# hay String objetos y string objetos.Cadena vs cadena

¿Cuál es la diferencia entre los dos? ¿Cuáles son las mejores prácticas para usar?

+0

También puede encontrar útil esta [pregunta y respuesta] (http://stackoverflow.com/questions/7074/in-c-what-is-the-difference-between-string-and-string). –

Respuesta

28

No hay diferencia. string (minúscula) es solo un alias para System.String.

3

No hay ninguna diferencia. string es un alias que el compilador convierte en System.String.

De hecho, es incluso un alias en MSIL:

.method private hidebysig static void Main(string[] args) cil managed 
2

No hay ninguna diferencia entre ellos. cadena es solo un alias para System.String. Cuando se compilan, ambos se compilan en el objeto System.String.

2

La versión en minúscula es solo un alias de la clase real String. No hay diferencia real en cuanto a IL generado.

10

Son alias y son intercambiables. Sin embargo, estilísticamente, para las declaraciones, uso la cadena en minúscula, y para los métodos estáticos, uso String.

string foo = "bar"; 

if(foo != String.Empty) 
{ 
    Console.WriteLine(String.Format("foo.Length = {0}", foo.Length)); 
} 
1

No hay diferencia porque el compilador convierte la cadena en System.String. Lo mismo con todos los tipos comunes (int va a System.Int32, etc.). Usamos el nombre simple para que se destaquen.

14

Sin diferencia. System.String es estrictamente idéntico a string. Las pautas comunes de codificación de C# indican que debe usar la palabra clave string.

1

No hay diferencia. string es una palabra clave de lenguaje C# que se refiere a la clase System.String, al igual que int es una palabra clave que hace referencia a System.Int32.

2

En el futuro, intente compilar una aplicación que use ambos y luego use Reflector (cambie el idioma a IL) para ver el resultado compilado. Verás que no hay diferencia.

1

Teniendo en cuenta que un "int" es diferente en algunos idiomas dependiendo del sistema de 16 bits/32 bits, una "cadena" podría evolucionar en el futuro para que no sea lo mismo que System.String.

Pero por ahora lo es.

0

solo una nota de bit: cadena/Cadena no es el único par de alias: por ej. Integer, Int32, int son todos alias.

@mliesen: no sucede en C#, no es como C. esto porque desde C# no se crea el ejecutable sino un código por compilación, como java.

Cuestiones relacionadas