首页 > 编程笔记 > C#笔记 阅读:11

C# dynamic动态类型的用法(附带实例)

C# 中的关键词 dynamic 数据类型是一种动态数据,在编译阶段(compile-time)不对此变量名称做数据类型的检查,直到程序运行时间(run-time)才对此变量做数据类型的检查。

定义动态变量时使用 dynamic,方法如下:
dynamic myVar = 5;
C# 编译程序在编译阶段是将此动态变量当作 object 变量做编译,实际运行时间(run-time)时才可以知道此变量的数据类型。

例如,输出动态变量的数据类型。
dynamic myVar = 5;
Console.WriteLine(myVar.GetType());
执行结果为:
System.Int32

动态变量可以在运行时间(run-time)根据所设定的值来实时更改数据类型。例如,更改动态变量的数据类型,同时输出:
dynamic dyVar = 50;
Console.WriteLine($"值 : {dyVar, -10}, Type: {dyVar.GetType()}");

dyVar = "DeepMind";
Console.WriteLine($"值 : {dyVar, -10}, Type: {dyVar.GetType()}");

dyVar = true;
Console.WriteLine($"值 : {dyVar, -10}, Type: {dyVar.GetType()}");
执行结果为:
值 : 50, Type: System.Int32
值 : DeepMind, Type: System.String
值 : True, Type: System.Boolean

动态数据也可以和其他数据使用隐式转换,例如:
dynamic dyVar = 5;
int i = dyVar;
Console.WriteLine($"i : {i.GetType()}, dyVar : {dyVar.GetType()}");

dyVar = "C# and Python";
string s = dyVar;
Console.WriteLine($"s : {s.GetType()}, dyVar : {dyVar.GetType()}");
执行结果为:
i : System.Int32, dyVar : System.Int32
s : System.String, dyVar : System.String

相关文章