以下是我遇到的问题的简化版本:
var list = new List<int> {1, 2, 3, 4, 5};
// list Count = 5 System.Collections.Generic.List<int>
var obj = list as object;
// obj Count = 5 object {System.Collections.Generic.List<int>}
var enumerable = obj as IEnumerable<object>;
// enumerable null System.Collections.Generic.IEnumerable<object>
Run Code Online (Sandbox Code Playgroud)
注释是Visual Studio 2017中监视窗口中的值
但是,如果我输入:
obj as IEnumerable<object>
Run Code Online (Sandbox Code Playgroud)
在观察窗口,我得到:
obj as IEnumerable<object> Count = 5 System.Collections.Generic.IEnumerable<object> {System.Collections.Generic.List<int>}
Run Code Online (Sandbox Code Playgroud)
那么为什么我可以在监视窗口中投射它并且它可以工作,但如果我在代码中执行它,它的计算结果为null?