C# - Diferença entre string e String


Você sabe a diferença entre string e String ? Qual é mais indicada para uso e quando ?

 

Na linguagem C# string é apenas um alias (um atalho) para a classe String no .NET Framework, e, da mesma forma, cada tipo na linguagem C# possui o seu equivalente no .NET Framework. Ex:  int mapeia para int16 e int32.

 

 

Apenas para constar veja abaixo outros aliases existente na linguagem c#:

object:  System.Object
string:  System.String
bool:    System.Boolean
byte:    System.Byte
sbyte:   System.SByte
short:   System.Int16
ushort:  System.UInt16
int:     System.Int32
uint:    System.UInt32
long:    System.Int64
ulong:   System.UInt64
float:   System.Single
double:  System.Double
decimal: System.Decimal
char:    System.Char

No caso de string e String não existe diferença alguma seja no desempenho, nos membros disponíveis, na forma como o código é gerado e no que elas podem fazer; ou seja, são exatamente iguais com diferenças muito sutís.

 

Assim String refere-se à classe definida no namespace System.String, enquanto que string é uma palavra-chave especial que define um tipo de compilação.

 

Apenas para ilustrar, no código a seguir temos a utilização de string e String exibindo a mesma mensagem visto que elas estão referenciando o mesmo tipo : a classe String.

 

1- string


 

2- String
 

 

Agora vejamos algumas diferenças sutis entre string e String:

  1. string não pode ser usada na reflexão. Para isso use String;

  2. String pode ser usado para criar outro alias. Ex:


 

Criamos o alias minhaString do tipo System.String. Isso é possível mas não é recomendado.

  1. String pode ser usado como um identificador válido; já string é uma palavra reservada e não pode ser um identificador;

  2. String deve ser usado com o namespace System.String; string pode ser usado sem o namespace;

  3. String é um tipo; string é uma palavra-chave;

O estilo seguido nos exemplos da Microsoft aponta para a utilização de string para declarar variáveis e String para acessar seus membros estáticos. Ex:

E estamos conversados...

"Levando ele mesmo(Jesus) em seu corpo os nossos pecados sobre o madeiro, para que, mortos para os pecados, pudéssemos viver para a justiça; e pelas suas feridas fostes sarados."
1 Pedro 2:24


Referências:


José Carlos Macoratti