Pregunta

En C# hay String objetos y string objetos.

¿Cuál es la diferencia entre los dos?¿Cuáles son las mejores prácticas sobre cuál utilizar?

¿Fue útil?

Solución

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

Otros consejos

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

Son alias y son intercambiables.Sin embargo, estilísticamente, para las declaraciones uso la cadena en minúsculas 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));
}

Uno es System.String, del tipo .Net, y el otro es específico de C#, que resulta ser un alias de System.String.

http://msdn.microsoft.com/en-us/library/362314fe(VS.71).aspx

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

De hecho, incluso tiene un alias en MSIL:

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

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

La versión en minúsculas es solo un alias de la clase String real.No existe una diferencia real en cuanto a la IL generada.

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

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.

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

Teniendo en cuenta que un "int" es diferente en algunos idiomas según el sistema de 16 bits/32 bits, una "cadena" podría evolucionar en el futuro para no ser la misma que System.String.

Pero por ahora lo es.

solo una pequeña nota:string/String no es el único par de alias:p.ej.Integer,Int32, int son todos alias.

@mliesen:No sucede en C#, no es como C.esto porque desde C# no creas un ejecutable sino un código por compilado, como java.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top