Gostaria de saber qual o tipo de String em C# é primitivo como java ou é composto?Acho várias divergências pela net e no MSDN não chega a dizer que ele é de fato um tipo simples. Aqui está o site do MSDN http://msdn.microsoft.com/en-us/library/362314fe.aspx
Enfim… o que vocês acham?
Tipo de String em C#
5 Respostas
Não sei nada sobre C#, mas dá pra chamar métodos a partir delas? Ou mesmo acessar atributos, como um .length ou .size?
Obs: Estou pressupondo que por tipo composto você queira dizer objetos (se bem que objetos são estruturas compostas).
No C# não existem tipos primitivos tudo é objeto, tanto String quanto string
string na verdade é apenas uma referencia para a classe String.
Abraços
Tanto no Java quanto no .NET strings são objetos. Olhe os fontes das implementações open source se estiver em dúvida ainda.
Só complementando o que disse o Louds, até as implementações são bastante semelhantes (ambas as classes java.lang.String e System.String são imutáveis, ambas internamente contém um array de caracteres, ambas usam internamente uma classe StringBuilder - java.lang.StringBuilder X System.Text.StringBuilder etc.
Existe uma palavra-chave no .NET (string) que é um sinônimo para System.String, assim como int é um sinônimo para System.Int32, object é um sinônimo para System.Object, e long é um sinônimo para System.Int64
Só complementando o que disse o Louds, até as implementações são bastante semelhantes (ambas as classes java.lang.String e System.String são imutáveis, ambas internamente contém um array de caracteres, ambas usam internamente uma classe StringBuilder - java.lang.StringBuilder X System.Text.StringBuilder etc.Existe uma palavra-chave no .NET (string) que é um sinônimo para System.String, assim como int é um sinônimo para System.Int32, object é um sinônimo para System.Object, e long é um sinônimo para System.Int64
Quanto a implementação, tenho que discordar. Existe uma diferença fundamental entre como string são implementadas na CLR e no Java. No Java ela usa um array char[] pra guardar os valores; na CLR eles são embutidos na classe. Isso gera uma economia de memória substancial para strings pequenas.