了解类型的安全性和c#
中的列表胁迫c#的类型系统可防止直接铸造List<string>
List<object>
。这种设计选择是该语言对类型安全性和鲁棒编程的重视至关重要的。 让我们探讨为什么存在这种限制。
核心问题源于基本类型的差异。 允许这样的演员会损害类型的安全性。 想象一下,如果您可以将AList<string>
分配给aList<object>
>变量:然后,您可以将任何类型的对象添加到列表中,绕过原始字符串约束。 尝试以后访问这些添加的对象,因为字符串不可避免地会导致运行时错误(例如InvalidCastException
)。
>在最初a
<code class="language-csharp">List<string> stringList = new List<string>(); List<object> objectList; objectList = (List<object>)stringList; // This is NOT allowed in C# objectList.Add(new Foo()); // Adding a non-string object // ... (Later attempts to access elements as strings would fail)</code>
中添加Foo
对象(或任何非弦乐对象)打破了列表的预期类型一致性。List<string>
>
以上是为什么不能将列表投入C#中的列表?的详细内容。更多信息请关注PHP中文网其他相关文章!