【发布时间】:2015-10-28 17:04:42
【问题描述】:
为什么我可以进行以下转换:
List<String> strings = new List<String>();
IEnumerable<Object> iStrings = strings as IEnumerable<Object>;
List<Object> oStrings = iStrings.ToList();
但我不能直接做:
List<String> strings = new List<String>();
List<Object> oStrings = strings as List<Object>;
【问题讨论】:
-
我不明白这个问题。
.ToList()调用一个方法。除了这个词的简单英语含义之外,它不会强制转换或转换,这在您的其余问题中对我来说没有意义。你能详细说明一下吗? -
@hvd 它确实转换。它不会投射。
-
@Servy 在这个词的简单英语含义中,也许。在这个词的 C# 含义中,它没有。这个问题向我暗示了(可能是错误的)这个词的 C# 含义。我已经在评论中提到了这一点。
-
@hvd 否。这是转换对象,在 C# 的单词含义中。创建一个包含在概念上与另一个相同的内容的新对象就是在 C# 中将一个对象“转换”为另一种类型的意思,这正是
ToList正在做的事情。 -
@Servy 在 C# 语言规范中,据我所见,“转换”仅表示隐式类型转换和显式转换,显式转换是强制转换。我不知道你在想什么其他可能的 C# 含义。
标签: c# .net generics collections