如果我尝试
List<dynamic> list = new List<dynamic> { "blah" };
var type = list.GetType().GetGenericArguments()[0];
我得到的是“对象”而不是string
。如何获得“真实”类型?
答案 0 :(得分:3)
尝试先访问该值,然后确定类型。
List<dynamic> list = new List<dynamic> { "blah", 15 };
var type = list[0].GetType();
Console.WriteLine(type); // prints out System.String
type = list[1].GetType();
Console.WriteLine(type); // prints out System.Int32
如果要获取所有类型的列表,请使用Linq:
var types = list.Select(item => item.GetType());
// print out
foreach (var t in types) {
Console.WriteLine(t);
}
答案 1 :(得分:0)
Object
是此处的真实类型。您可以将dynamic
视为具有特殊行为的对象,其中成员绑定发生在运行时而不是编译时。对于大多数类型,这就像反射的快捷方式。