¿Diferencia entre “String” y “string” en .NET y cuál es la mejor?

14

En .NET Framework, al menos en el lenguaje C #, tenemos dos "versiones" del tipo de cadena:

  • "cadena"
  • "Cadena"

Parece que son intercambiables, pero ¿son realmente? Si no son intercambiables, ¿es generalmente mejor usar uno en lugar del otro y bajo qué circunstancias?

    
pregunta Cyberherbalist 11.04.2012 - 23:16

6 respuestas

29

Bueno, de acuerdo con la MSDN

  

cadena es un alias para String en la .NET Framework.

Donde "String" es en realidad System.String .

Yo diría que son intercambiables y no hay ninguna diferencia cuando y donde deberías usar uno u otro.

Sería mejor ser coherente con el que usaste.

    
respondido por el ChrisF 11.04.2012 - 23:19
20

Como se señaló, son lo mismo y string es solo un alias de String .

Para lo que vale, uso string para declarar tipos: variables, propiedades, valores de retorno y parámetros. Esto es consistente con el uso de otros tipos de sistemas: int , bool , var , etc. (aunque también son correctos Int32 y Boolean ).

Utilizo String cuando uso los métodos estáticos en la clase String, como String.Split() o String.IsNullOrEmpty() . Siento que esto tiene más sentido porque los métodos pertenecen a una clase y es consistente con la forma en que uso otros métodos estáticos.

    
respondido por el Kirk Broadhurst 12.04.2012 - 07:04
4

Sugeriría usar string en minúsculas. La mayúscula String usará la primera clase llamada Cadena que encuentra en los espacios de nombres importados ... que generalmente es System.String . Es posible que en su lugar se use su propia clase String.

    
respondido por el Bryan Boettcher 11.04.2012 - 23:52
4

string es una palabra clave de C # que es simplemente un alias para el System.String

..pero como es una palabra clave, su editor de sintaxis para colorear / IDE lo mostrará en color de palabra clave, igual que int, double, if, else, etc. Estilísticamente, puede preferir usar la palabra clave en lugar de System.String type (o simplemente String después de haber hecho using System; ).

Sin embargo, este es un punto de nicho, ya que a pesar de que bool , char , int , double y string son todos alias de palabras clave para los tipos de sistema, string es un impar-one-out como es un tipo de referencia y los otros son tipos de valor.

    
respondido por el JBRWilkinson 12.04.2012 - 10:38
2

string es solo un alias para String , en última instancia, son los mismos.

Puedes usar el que prefieras, aunque generalmente uso string cuando planeo usarlo como un tipo de datos primitivo (similar a int , float o bool ) y String cuando estoy planeando usarlo como un objeto / clase. Por ejemplo:

string foo = "   ";
if (String.isNullOrWhitespace(foo)) 
{
    // ...
}

En el caso anterior, planeo usar foo simplemente para almacenar algo de texto (de manera efectiva como primitivo), así que uso string ; sin embargo, cuando llamo a String.isNullOrWhitespace(string) uso String . Hago esto, porque generalmente la primera letra de los nombres de las clases están en mayúscula ( String ) mientras que la primera letra de los primitivos (como int ) no.

    
respondido por el BBB 12.04.2012 - 00:47
-2

La cadena se usa con el espacio de nombres System.String, la cadena se usa la especificación del compilador C #, además System.String es el valor del tipo de referencia. Es preferible que trate con objetos del sistema, solo para propósitos literales. El sistema y el sistema que funcionan son los mismos.

string TC = new System.String('/', 5);

La cadena se usa para propósitos de comparación, iguales y otros también.

    
respondido por el Anjan Kant 01.05.2014 - 13:14

Lea otras preguntas en las etiquetas