如果可能的话:
IList <dynamic> = new List <dynamic>;
或:
class A <T>
{
A(T){}
}
class B: A <dynamic> {}
。为什么不可能这样做:
class U: IEnumerable <dynamic> {}
答案 0 :(得分:1)
最简单的思考方式 - 动态不是一种类型 。
dynamic是一个编译器指令,它关闭所有编译时检查,并在运行时实现它们。
声明变量dynamic时:
dynamic t = 123;
t = t.Length; // crashes at runtime
实际上你将变量声明为System.Object,然后关闭涉及该变量的表达式的所有编译时检查:
object t = 123;
unchecked_for_errors
{
t = t.Length;
}
您不能将<dynamic>
用作类型,因为它实际上并非一个。
改为使用<object>
。
答案 1 :(得分:0)