Avatar ·

Qual é a diferença entre String e string em C#? São tipos diferentes?

Olá a todos! Comecei a estudar C# recentemente, e um ponto me confunde. Em diferentes exemplos de código, vejo que strings são declaradas de maneiras diferentes: alguns escrevem `string name = "John";`, e outros `String name = "John";`. Ambos funcionam, o IntelliSense não reclama. Mas não são nomes diferentes? Talvez `String` seja uma classe do .NET, e `string` seja algum tipo primitivo? Ou é a mesma coisa?\n\nTentei escrever este código:\n\n```csharp\nstring a = "Hello";\nString b = "World";\nConsole.WriteLine(a.GetType()); // System.String\nConsole.WriteLine(b.GetType()); // System.String\nConsole.WriteLine(a == b); // True\n```\n\nAmbos exibem `System.String`, e a comparação funciona. Mas se é a mesma coisa, por que dois nomes? Talvez haja alguma diferença de desempenho ou na forma como lidam com a memória? Ou é apenas uma questão de estilo? Ficarei grato por uma explicação detalhada, pois tenho medo de escrever algo errado em um projeto real.\n<<>>\n

Resposta curta