c# vs typescript - Was ist der Unterschied zwischen String und String in C #?




15 Answers

string ist ein Alias ​​in C # für System.String .
Technisch gibt es also keinen Unterschied. Es ist wie int vs. System.Int32 .

Im Rahmen der Richtlinien wird im Allgemeinen empfohlen, die string immer dann zu verwenden, wenn Sie auf ein Objekt verweisen.

z.B

string place = "world";

Ebenso denke ich, dass es generell empfohlen wird, String zu verwenden, wenn Sie speziell auf die Klasse verweisen müssen.

z.B

string greet = String.Format("Hello {0}!", place);

Dies ist der Stil, den Microsoft in seinen Beispielen verwendet .

Es scheint, dass sich die StyleCop in diesem Bereich möglicherweise geändert haben, da StyleCop nun die Verwendung der C # StyleCop Aliase erzwingt.

java stackoverflow

Beispiel ( Fall beachten ):

string s = "Hello world!";
String s = "Hello world!";

Was sind die Richtlinien für die Verwendung von jedem? Und was sind die Unterschiede ?




String steht für System.String und ist ein .NET Framework-Typ. string ist ein Alias in der C # -Sprache für System.String . Beide werden in IL (Intermediate Language) nach System.String kompiliert, sodass es keinen Unterschied gibt. Wählen Sie, was Ihnen gefällt und verwenden Sie das. Wenn Sie in C # codieren, würde ich string bevorzugen, da es sich um einen Aliasnamen vom Typ C # handelt, der von C # -Programmierern bekannt ist.

Ich kann dasselbe über ( int , System.Int32 ) etc sagen.




string ist ein reserviertes Wort, aber String ist nur ein Klassenname. Dies bedeutet, dass string nicht als Variablenname verwendet werden kann.

Wenn Sie aus irgendeinem Grund eine Variable namens string wollten, sehen Sie nur die erste dieser Kompilierungen:

StringBuilder String = new StringBuilder();  // compiles
StringBuilder string = new StringBuilder();  // doesn't compile 

Wenn Sie wirklich einen Variablennamen namens string wünschen, können Sie @ als Präfix verwenden:

StringBuilder @string = new StringBuilder();

Ein weiterer kritischer Unterschied: hebt sie anders hervor.




Es ist oben abgedeckt worden; Sie können string jedoch nicht in Reflektion verwenden. Sie müssen String .




Ich ziehe die großgeschriebenen .NET Typen (anstelle der Aliasnamen) aus Gründen der Formatierung vor. Die .NET Typen haben dieselbe Farbe wie andere Objekttypen (die Werttypen sind schließlich richtige Objekte).

Bedingte Schlüsselwörter und Steuerelemente (z. B. if , switch und return ) sind in Kleinbuchstaben und dunkelblau (Standardeinstellung). Und ich möchte lieber nicht die Uneinigkeit in der Verwendung und im Format haben.

Erwägen:

String someString; 
string anotherString; 



C # ist eine Sprache, die zusammen mit der CLR verwendet wird.

string ist ein Typ in C #.

System.String ist ein Typ in der CLR.

Wenn Sie C # zusammen mit der CLR- string wird System.String .

Theoretisch könnte ein C # -Compiler implementiert werden, der Java-Bytecode generiert. Eine sinnvolle Implementierung dieses Compilers würde wahrscheinlich den string java.lang.String , um mit der Java-Laufzeitbibliothek zusammenzuarbeiten.




string ist nur ein Alias ​​für System.String . Der Compiler behandelt sie gleich.

Der einzige praktische Unterschied besteht in der Hervorhebung der Syntax, die Sie erwähnen, und dass Sie using System schreiben müssen using System wenn Sie String .




Beide sind gleich. Aus Sicht der Codierungsrichtlinien ist es jedoch besser, string anstelle von String . Dies ist, was Entwickler normalerweise verwenden. Anstatt Int32 wir beispielsweise int da int is ein Alias ​​für Int32

FYI "Der Schlüsselwortstring ist einfach ein Alias ​​für die vordefinierte Klasse System.String ." - C # System.String http://msdn2.microsoft.com/En-US/library/aa691153.aspx




Die Verwendung von Systemtypen erleichtert das Portieren zwischen C # und VB.Net, wenn Sie sich für solche Dinge interessieren.







String ist kein Schlüsselwort und kann als Bezeichner verwendet werden, während string ein Schlüsselwort ist und nicht als Bezeichner verwendet werden kann. Und in Funktionssicht sind beide gleich.




Ich möchte dies nur der Antwort von lfousts hinzufügen, vom Buch Ritchers:

In der C # -Sprachenspezifikation heißt es: „Die Verwendung des Schlüsselworts wird aus Stilgründen gegenüber der Verwendung des vollständigen Systemtypnamens bevorzugt.“ Ich stimme der Sprachspezifikation nicht zu; Ich ziehe es vor, die FCL-Typnamen zu verwenden und die primitiven Typnamen vollständig zu vermeiden. Ich wünschte sogar, dass Compiler nicht einmal die primitiven Typnamen anboten und die Entwickler gezwungen waren, stattdessen die FCL-Typnamen zu verwenden. Hier sind meine Gründe:

Ich bekam seine Meinung nicht, bevor ich den ganzen Abschnitt gelesen habe.




Es gibt keinen Unterschied.

Das Schlüsselwort C # stringist dem .NET-Typ zugeordnet System.String- es ist ein Alias, der die Namenskonventionen der Sprache einhält.

Ebenso intKarten zu System.Int32.




Zu diesem Thema gibt es ein Zitat aus Daniel Solis 'Buch .

Alle vordefinierten Typen werden direkt den zugrunde liegenden .NET-Typen zugeordnet. Die C # -Typnamen (Zeichenfolge) sind einfach Aliasnamen für die .NET-Typen (String oder System.String). Die Verwendung der .NET-Namen funktioniert also syntaktisch einwandfrei, obwohl davon abgeraten wird. In einem C # -Programm sollten Sie die C # -Namen anstelle der .NET-Namen verwenden.




Ja, das ist kein Unterschied zwischen ihnen, genau wie das boolund Boolean.




Related