2009-07-06 19 views

Antwort

13

Das sind genau die gleichen. "Zeichenfolge" ist nur ein Alias ​​für "System.String" in C#

3

String und String beide zu System.String auflösen. Also nein, es gibt überhaupt keinen Unterschied.

1

Ja, string ist ein Alias ​​für System.String in C#
Testen Sie selbst:

public static void Main(string[] args) 
    { 
     string s1 = "abc"; 
     System.String s2 = "xyz"; 
     Type t1 = s1.GetType(); 
     Type t2 = s2.GetType(); 

     System.Console.WriteLine(t1.Equals(t2)); 
     return ; 
    } 
1

Ja, es gibt absolut keinen Unterschied aus CLR Sicht: string vs String ist rein C# syntaktischer Zucker.

+1

aber warum ist dieser syntaktische Zucker notwendig/nützlich? Ich habe das nie verstanden. Ich kam aus der MS-Welt und war für mich (obwohl es klar ist) immer nur ein Punkt der Verwirrung unter den Leuten und auch irgendwie eine Inkonsistenz im Programmierstil. Ein Teil des Teams verwendet String, andere string .. – Juri

+1

Es ist nur so, dass primitive Typen wie string, int oder bool normalerweise ein entsprechendes Sprachschlüsselwort haben. Sie würden Int32 nicht jedes Mal schreiben wollen, wenn Sie einen Int ... –

2

In C# String ist einfach ein Alias ​​für den CLR-Typen System.String, so gibt es keinen Unterschied in der Leistung. Es ist nicht klar, warum MS sich dafür entschieden hat, diesen Alias ​​einzubeziehen, insbesondere da die anderen Aliased-Typen (int, long usw.) Werttypen und keine Referenztypen sind.

In meinem Team entschieden wir, dass statische Methoden der String-Klasse wie z. String.ToUpper() statt string.ToUpper(), um mit anderen CLR Sprachen konsequenter zu sein.

Letztlich, welche Version Sie verwenden, ist an Ihnen, aber Sie sollten entscheiden, welche Sie in welchem ​​Kontext, um die Konsistenz zu verbessern verwenden.