String vs string

In C # ci sono oggetti String e oggetti string .

Qual è la differenza tra i due? Quali sono le migliori pratiche riguardo a quali utilizzare?

Non c’è differenza. string (minuscolo) è solo un alias per System.String.

Nessuna differenza. System.String è strettamente identico alla string . Le linee guida di codifica C # comuni indicano che è necessario utilizzare la string parole chiave.

Sono alias e sono intercambiabili. Tuttavia, stilisticamente, per le dichiarazioni, utilizzo la stringa in minuscolo e, per i metodi statici, utilizzo String.

 string foo = "bar"; if( foo != String.Empty ) { Console.WriteLine(String.Format("foo.Length = {0}", foo.Length)); } 

Uno è System.String di .Net Type e uno è specifico di C # che risulta essere un alias di System.String.

http://msdn.microsoft.com/en-us/library/362314fe(VS.71).aspx

Non c’è differenza. string è un alias che il compilatore converte in System.String.

In effetti, è addirittura aliasato in MSIL:

 .method private hidebysig static void Main(string[] args) cil managed 

Non c’è differenza tra loro. string è solo un alias per System.String. Una volta compilati, vengono entrambi compilati nell’object System.String.

La versione minuscola è solo un alias della class effettiva String. Non vi è alcuna reale differenza per quanto generato da IL.

In futuro, prova a compilare un’app che utilizza entrambi e quindi usa Reflector (cambia la lingua in IL) per visualizzare l’output compilato. Vedrai che non c’è differenza.

Non c’è differenza perché la stringa viene convertita in System.String dal compilatore. Lo stesso con tutti i tipi comuni (int va a System.Int32, ecc.). Usiamo il nome semplice in modo che risaltino.

Non c’è differenza. string è una parola chiave in linguaggio C # che fa riferimento alla class System.String, proprio come int è una parola chiave che si riferisce a System.Int32.

Considerando che un “int” è diverso in alcune lingue a seconda del sistema a 16 bit / 32 bit, una “stringa” potrebbe evolversi in futuro per non essere la stessa di System.String.

Ma per ora lo è.

solo un po ‘di nota: string / String non è l’unica coppia di alias: es. Integer, Int32, int sono tutti alias.

@mliesen: non è successo in C #, non è come C. questo perché da C # non si crea eseguibile ma un codice per-compilato, come java.