Maison >développement back-end >C++ >C # Liste vs liste: pourquoi l'incompatibilité du type?
C # Liste
En C #, l'attribution d'une variable List<string>
à une List<object>
est interdite en raison du système de frappe solide du langage. Chaque variable est strictement liée à son type déclaré, assurant la sécurité du type. A List<string>
maintient exclusivement des chaînes, tandis qu'un List<object>
peut accueillir n'importe quel type d'objet.
Considérez ce scénario:
<code class="language-csharp">List<string> stringList = new List<string>(); List<object> objectList; objectList = stringList; // This is NOT allowed</code>
Autoriser cette affectation compromettrait la sécurité de type. Si vous avez par la suite ajouté un objet non corporel (par exemple, un entier) à objectList
, itérer à travers stringList
provoquerait une exception d'exécution lors de la rencontre de l'objet incompatible.
Inversement, en casting List<object>
à 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>
Bien que apparemment plausible, cela est généralement peu pratique. Il ouvre la porte à l'ajout d'éléments non-cordes à objectList
, conduisant à un comportement imprévisible et à des erreurs d'élevage potentielles. Le compilateur C # empêche cela de maintenir l'intégrité des données. Le principe central est d'empêcher les situations où les décalages de type pourraient conduire à des accidents inattendus ou à la corruption des données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!