Beispiel ( den Fall beachten ):
string s = "Hello world!";
String s = "Hello world!";
Wie lauten die Leitlinien für die Verwendung der einzelnen Mittel? Und was sind die Unterschiede?
Beispiel ( den Fall beachten ):
string s = "Hello world!";
String s = "Hello world!";
Wie lauten die Leitlinien für die Verwendung der einzelnen Mittel? Und was sind die Unterschiede?
Neue Antwort nach 6 Jahren und 5 Monaten (Prokrastination).
Während string
ist ein reserviertes C#-Schlüsselwort, das immer eine feste Bedeutung hat, String
ist nur ein gewöhnlicher Kennung was sich auf alles beziehen kann. Abhängig von den Mitgliedern des aktuellen Typs, dem aktuellen Namespace und dem angewandten using
Richtlinien und deren Platzierung, String
könnte ein Wert oder ein Typ sein, der sich von global::System.String
.
Ich werde zwei Beispiele anführen, bei denen using
Richtlinien werden nicht helfen .
Erstens, wenn String
ist eine Wert des aktuellen Typs (oder einer lokalen Variablen):
class MySequence<TElement>
{
public IEnumerable<TElement> String { get; set; }
void Example()
{
var test = String.Format("Hello {0}.", DateTime.Today.DayOfWeek);
}
}
Das obige Beispiel lässt sich nicht kompilieren, weil IEnumerable<>
hat kein nicht-statisches Mitglied namens Format
und es gelten keine Erweiterungsmethoden. Im obigen Fall kann es immer noch möglich sein, Folgendes zu verwenden String
in anderen Kontexten, in denen ein Typ ist syntaktisch die einzige Möglichkeit. Zum Beispiel String local = "Hi mum!";
könnte OK sein (je nach Namespace und using
Richtlinien).
Schlimmer: Sagen String.Concat(someSequence)
wird wahrscheinlich (je nach using
s) gehen zur Linq-Erweiterungsmethode Enumerable.Concat
. Es wird nicht zur statischen Methode übergehen string.Concat
.
Zweitens, wenn String
ist eine weitere Typ innerhalb des aktuellen Typs verschachtelt:
class MyPiano
{
protected class String
{
}
void Example()
{
var test1 = String.Format("Hello {0}.", DateTime.Today.DayOfWeek);
String test2 = "Goodbye";
}
}
Keine der beiden Aussagen in der Example
Methode kompiliert. Hier String
ist immer ein Klavier String , MyPiano.String
. Kein Mitglied ( static
oder nicht) Format
auf ihr existiert (oder von ihrer Basisklasse geerbt wird). Und der Wert "Goodbye"
kann nicht in sie umgewandelt werden.
string
ist ein Alias (oder eine Kurzform) von System.String
. Das heißt, durch Eingabe von string
wir meinten System.String
. Sie können mehr in think link lesen: string' ist ein Alias/Kurzform von System.String.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.