Heim >Backend-Entwicklung >C++ >C #liste vs. List: Warum die Inkompatibilität Typ?
c# list
In C#ist das Zuweisen einer List<string>
einer List<object>
-Variablen aufgrund des starken Schreibsystems der Sprache verboten. Jede Variable ist streng an ihren deklarierten Typ gebunden und gewährleistet die Sicherheit der Typ. A List<string>
hält ausschließlich Zeichenfolgen, während A List<object>
jeden Objekttyp aufnehmen kann.
Betrachten Sie dieses Szenario:
<code class="language-csharp">List<string> stringList = new List<string>(); List<object> objectList; objectList = stringList; // This is NOT allowed</code>
, die diese Zuordnung zuzulassen, würde die Sicherheit vom Typ beeinträchtigen. Wenn Sie anschließend ein Nicht-String-Objekt (z. B. eine Ganzzahl) zu objectList
hinzugefügt haben, würde das Iterieren von stringList
bei der Begegnung mit dem inkompatiblen Objekt eine Laufzeitausnahme verursachen.
umgekehrt gießen List<object>
zu List<string>
:
<code class="language-csharp">List<object> objectList = new List<object>(); List<string> stringList; stringList = (List<string>)objectList; // This is also NOT allowed</code>
zwar scheinbar plausibel, ist dies im Allgemeinen unpraktisch. Es öffnet die Tür zum Hinzufügen von Nicht-String-Elementen zu objectList
, was zu unvorhersehbaren Verhaltensweisen und potenziellen Laufzeitfehlern führt. Der C# Compiler verhindert, dass dies die Datenintegrität aufrechterhält. Das Kernprinzip besteht darin, Situationen zu verhindern, in denen Typenfehlanpassungen zu unerwarteten Abstürze oder Datenversorgung führen können.
Das obige ist der detaillierte Inhalt vonC #liste vs. List: Warum die Inkompatibilität Typ?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!