Qual é a diferença entre String e string em C#?

Exemplo (notar o caso):

string s = "Hello world!";
String s = "Hello world!";

Quais são as *guias*** para o uso de cada uma? E quais são as diferenças****?

Solução

string é um apelido em C# para System.String.
Por isso, tecnicamente, não há diferença. É como int vs. System.Int32.

No que diz respeito às directrizes, é geralmente recomendado utilizar o "string" sempre que se estiver a referir a um objecto.

por exemplo

string place = "world";

Da mesma forma, eu acho que é geralmente recomendado utilizar o `String' se você precisar se referir especificamente à classe.

por exemplo

string greet = String.Format("Hello {0}!", place);

Este é o estilo que a Microsoft tende a usar em seus exemplos.

Parece que a orientação nesta área pode ter mudado, já que StyleCop agora impõe o uso dos apelidos específicos em C#.

Comentários (35)

System.String' é a classe string .NET - em C# string' é um apelido paraSystem.String' - então em uso eles são os mesmos.

Quanto às diretrizes, eu não ficaria muito atolado e apenas usaria o que você quiser - há coisas mais importantes na vida e o código vai ser o mesmo de qualquer maneira.

Se vocês se encontram construindo sistemas onde é necessário especificar o tamanho dos inteiros que estão utilizando e assim tendem a utilizar Int16, Int32, UInt16, UInt32 etc. então pode parecer mais natural utilizar String - e ao mover-se entre diferentes linguagens .net pode tornar as coisas mais compreensíveis - caso contrário eu utilizaria string e int.

Comentários (3)

A letra minúscula "String" é um apelido para "System.String". Eles são os mesmos em C#.

Há um debate sobre se você deve utilizar os tipos de Sistema (System.Int32, System.String, etc.) ou os apelidos C# (int, string, etc.). Eu pessoalmente acredito que você deve utilizar os apelidos `C#, mas essa é apenas a minha preferência pessoal.

Comentários (2)