一、使用dynamic类型要注意的地方
1、由于dynamic类型的变量在设计时是未知的,因此无法看到Visual Studio对dynamic类型变量的成员进行自动提示,因为编译器也不知道。
2、由于dynamic类型变量的具体类型要在运行时才能确定,因此你对该变量的成员调用必须是正确的,如果调用了变量没有的属性或方法,将会产生异常。
二、dynamic类型常见应用场景
1、在声明中,作为属性、字段、索引器、参数、返回值或类型约束的类型,都可以使用dynamic。
2、在显式类型转换中,作为转换的目标类型。任何对象都可以隐式转为dynamic。
3、在以类型充当值(如 is 运算符或 as 运算符右侧)或者作为 typeof 的参数成为构造类型的一部分的任何上下文中。
4、处理Html DOM对象
三、dynamic类型应用实例
class DynamicUser
{
/** <summary>
/// 字段
/// </summary>
public dynamic userid;
/** <summary>
/// 属性
/// </summary>
public dynamic UserName { get; set; }
/** <summary>
/// 玩游戏
/// (dynamic可以作为参数、返回值等)
/// </summary>
/// <param name="game"></param>
/// <returns></returns>
public dynamic Play(dynamic game)
{
dynamic defaultGame = "Play Basketball.";
dynamic secGame = "Play with mud.";
if (game is int)
{
return defaultGame;
}
else
{
return secGame;
}
}
/** <summary>
/// 显式类型转换
/// </summary>
public void ConvertToDynamic(object obj)
{
dynamic d;
d = (dynamic)obj;
Console.WriteLine(d);
}
/** <summary>
/// 类型判定
/// (dynamic 可以使用is、as、typeof)
/// </summary>
public void TypeCheck()
{
int age = 20;
Console.WriteLine("Age is Dynamic? {0}",age is dynamic);
dynamic d = age as dynamic;
Console.WriteLine("Age:{0}",d);
Console.WriteLine("List<dynamic>'s type is {0}",typeof(List<dynamic>));
}
}
参考资料: .net中dynamic类型的使用 http://www.studyofnet.com/news/1115.html