C# dynamic动态类型的用法(附带实例)
C# 中的关键词 dynamic 数据类型是一种动态数据,在编译阶段(compile-time)不对此变量名称做数据类型的检查,直到程序运行时间(run-time)才对此变量做数据类型的检查。
定义动态变量时使用 dynamic,方法如下:
例如,输出动态变量的数据类型。
动态变量可以在运行时间(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