Domanda

In C # ci sono oggetti String e oggetti string .

Qual è la differenza tra i due? Quali sono le migliori pratiche in merito alle quali utilizzare?

È stato utile?

Soluzione

Non c'è differenza. stringa (lettere minuscole) è solo un alias per System.String.

Altri suggerimenti

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

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 .Net Type e uno è specifico per C # che risulta essere un alias di System.String.

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

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

In effetti, è persino 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. Quando compilati, entrambi vengono compilati nell'oggetto System.String.

La versione in minuscolo è solo un alias dell'attuale classe String. Non vi è alcuna differenza reale per quanto riguarda IL generato.

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

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

Non c'è alcuna 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.

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

Ma per ora lo è.

solo una piccola nota: string / String non è l'unica coppia di alias: per esempio. Integer, Int32, int sono tutti alias.

@mliesen: non succede in C #, non è come C. questo perché da C # non crei un eseguibile ma un codice per compilato, come java.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top