c# casting 问题

标签 c# casting

如果我有以下类(class):

public class MyItems : List<MyItem>
{
..
}

public class MyItem : Item
{
..
}

我怎样才能将 MyItems 的实例转换回 List<Item> ?我试过进行显式转换,但出现异常。

最佳答案

你不能,因为 C# 不支持泛型变体 (see here for discussion of terminology),即使支持,它也不允许这种情况,因为如果你可以将 MyItems 转换为 List<Item> , 你可以调用 Add(someItemThatIsntAMyItem) ,这将违反类型安全(因为 MyItems 只能包含 MyItem 对象,而不是任意项)。

参见 this question (或在 SO 中搜索“c# generic variance”)以获取有关此问题和 C# 4 future 更改的更多信息(尽管这些不会影响您的具体情况)。

关于c# casting 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2036258/

相关文章:

c++ - 为什么 int 指针给我 float ?

c# - 如何在运行时使用 NLog 获取当前目标文件的路径?

c# - SNMP:创建自定义 OID

c# - 字符串与 StringBuilder

c++ - unique_ptr 的 static_pointer_cast 的替代方案

java - 在 Java 中有效地类型转换 vector 的元素

c# - 当您将对象数组转换为字符串数组时,它叫什么?

c# - 如何在 Asp.Net MVC Razor 中创建 'generic' 控件?

c# - 读取包含多个文件的 MemoryStream

swift - 如何在 swift 中定义显式转换运算符?