《c#高级编程》第4章C#4.0中的更改(九)——协变和逆变

发布时间 2023-04-25 14:14:30作者: GroundSoft

动态字典(Dynamic Dictionary)是指一个键值对集合,其中键和值的类型都可以在运行时确定并且可以动态变化。在C#中,可以使用 dynamic 关键字来实现这一功能。

例如,下面的代码演示了如何创建一个动态字典并向其中添加元素:

dynamic dict = new System.Dynamic.ExpandoObject();
dict.Name = "张三";
dict.Age = 25;

在上述代码中,我们通过 dynamic 关键字声明了一个动态字典,并向其中添加了两个元素(Name 和 Age)。由于 dynamic 类型是在运行时才确定的,因此可以在任何时候向该字典中添加或删除元素。

动态字典的经典应用场景包括在需要动态构建数据结构或操作未知类型数据的场景中,特别是在处理API响应或其他外部数据源时,往往需要灵活地处理各种不同的数据类型。

元组(Tuple)是指一组有序、不可变的值,可以用作返回值的容器或方法参数的容器。在C#中,可以使用 Tuple 泛型类来实现元组。

例如,下面的代码演示了如何创建一个元组并向其中添加元素:

var tuple = Tuple.Create("张三", 25);

在上述代码中,我们使用 Tuple.Create 方法创建了一个包含两个元素的元组,并将其赋值给变量 tuple。由于元组是不可变的,因此无法通过索引或其他方式来修改其中的元素。

元组的经典应用场景包括在需要返回多个值时,特别是当这些值之间没有明显关系或无法封装为一个对象时。另外,元组也可以用作方法参数,将多个参数打包成一个参数传递,从而简化方法调用。

动态对象(Dynamic Object)是指一个对象,在运行时可以动态地添加、删除、修改其属性和方法。在C#中,可以使用 dynamic 关键字来实现这一功能。

例如,下面的代码演示了如何创建一个动态对象并向其中添加元素:

dynamic obj = new System.Dynamic.ExpandoObject();
obj.Name = "张三";
obj.SayHello = new Action(() => Console.WriteLine("Hello, World!"));

在上述代码中,我们使用 dynamic 关键字声明了一个动态对象,并向其中添加了两个属性(Name 和 SayHello)。由于 dynamic 类型是在运行时才确定的,因此可以在任何时候向该对象中添加或删除属性。

动态对象的经典应用场景包括在需要动态构建对象或操作未知类型数据的场景中,特别是在处理API响应或其他外部数据源时,往往需要灵活地处理各种不同的数据类型。