C#拆箱和装箱 泛型

C#拆箱和装箱 泛型

装箱和拆箱:

  1. 装箱(boxing)是将值类型(value type)转换为引用类型(reference type)的过程。例如,将一个整数类型的变量装箱为 object 类型。
  2. 装箱会创建一个新的对象,将值类型的值复制到这个对象中,然后返回对该对象的引用。
  3. 装箱是一个昂贵的操作,因为它需要分配内存并复制值。在高性能应用程序中,应尽可能避免装箱。
  4. 拆箱(unboxing)是将引用类型转换为值类型的过程。例如,将一个 object 类型的变量拆箱为整数类型。
  5. 拆箱会从对象中提取值类型的值,并将其复制到一个新的值类型变量中。

频繁装箱和拆箱会导致性能下降

泛型:

  1. 泛型(generics)是 C# 中一种强大的类型参数化机制。它允许在编译时确定类型参数,并以类型安全的方式使用这些参数。

    (可理解为约束了参数类型)

  2. 使用泛型可以减少代码重复,提高代码可读性和可维护性。

  3. 泛型类、泛型接口和泛型方法都是泛型的基本概念。

  4. 泛型类(generic class)是一种定义了一个或多个类型参数的类。这些类型参数可以在类的成员中使用。

  5. 泛型接口(generic interface)是一种定义了一个或多个类型参数的接口。这些类型参数可以在接口的成员中使用。

  6. 泛型方法(generic method)是一种定义了一个或多个类型参数的方法。这些类型参数可以在方法的参数、返回值和局部变量中使用。

  7. 使用泛型时,可以通过在类型参数前加上 where 子句来对类型参数进行限制,以确保泛型类型满足一定的要求。例如:where T : class 表示 T 必须是引用类型。

posted @ 2023-03-10 02:08  Wo_OD  阅读(115)  评论(0编辑  收藏  举报