为什么不将"as something.GetType()"转换为有效?

Jdo*_*dog 0 c# casting

此代码导致错误:type or namespace "index" could not be found.

foreach (var index in Model.UserAssets.Keys)
{
    foreach (var asset in Model.UserAssets[index])
    {
        var val = asset as index.getType();
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?是因为index不在范围内(虽然它应该是)?

use*_*740 7

变量 index 在范围上,但as 允许一个类型:expr as T.

因此asset as index.getType(),编译器试图index像处理类型那样对待它,并且从不认为存在具有给定名称的变量.


尝试as对运行时类型信息进行强制转换(包括使用),例如包含在Type实例中,通常没有意义.为什么和替代方案,考虑