C# 泛型2025 年 9 月 12 日 | 阅读 8 分钟 C# 编程语言有一个重要的特性,称为泛型。它使我们能够创建带有类型占位符的类、方法、结构、委托和接口。这些占位符在编译期间由编译器替换为指定的类型,这保证了类型安全并提高了性能。 ![]() 泛型主要用于创建通用、可重用的类和方法,它们可以处理不同的数据类型,而无需代码重复。我们需要使用尖括号 (<>) 来定义泛型类。尖括号用于将类或方法声明为泛型类型并接受多个类型参数。 语法它具有以下语法。 在这个语法中,
C# 泛型示例让我们以一个例子来说明 C# 中的泛型。 示例编译并运行输出 The value is 100 The value is John The value is 3.14 The value is True 说明 在此示例中,我们采用了名为 Display() 的泛型方法,它可以接受任何类型的值,例如 int、string、double 或 bool。之后,我们调用 Display() 方法,编译器会自动将 T 替换为实际类型值,并打印结果。 C# 中泛型的类型泛型允许创建灵活、可重用和类型安全的代码。在 C# 中有几种使用泛型的方法。其中一些如下 ![]() 在这里,我们将逐一讨论这些泛型。 1) 泛型类泛型类是 C# 中一个重要的特性,它允许我们定义可以在不同数据类型上运行的类型安全数据结构或类。实际数据类型在类实例化时指定,这提供了更大的灵活性和代码可重用性。 C# 泛型类示例 让我们以一个例子来说明 C# 中的泛型类。 示例编译并运行输出 Integer: 5 String: Hello 说明 在此示例中,我们采用了名为 Box<T> 的类,其中 T 可以是任何数据类型。在主方法中,我们创建了该泛型类的两个整数和字符串类型的实例。第一个实例是 b,它保存整数值,第二个实例是 bb,它保存字符串值。 2) 泛型方法在 C# 中,泛型方法是使用多个类型参数定义的方法,这使得它能够以类型安全的方式处理不同的数据类型,而无需代码重复。当我们想要编写一个可以处理不同类型而不影响性能或类型安全的方法时,它很有用。 C# 中泛型方法的示例 让我们以一个例子来说明 C# 中的泛型方法。 示例编译并运行输出 The values before swapping are: m = 5, n = 10 After swapping: m = 10, n = 5 Before swapping: first = TPoint, second = Tech After swapping: first = Tech, second = Tpoint 说明 在此示例中,我们采用了名为 TPoint 的类,其中包含 swapping<T> 方法,该方法使用 ref 关键字通过引用获取两个参数。该方法通过使用临时变量来交换值。在主方法中,程序首先交换两个整数 m 和 n,并打印它们交换前后的值。之后,它交换两个字符串 f 和 s,并显示输出。 3) 泛型接口在 C# 中,泛型接口使我们能够定义一个带有多个类型参数的契约,这使其能够灵活地处理各种数据类型。它使用类型参数,避免了多种数据类型的代码重复。它确保了类型安全和代码可重用性。 C# 泛型接口示例 让我们以一个例子来说明 C# 中的泛型接口。 示例编译并运行输出 The square of a number is 100 说明 在此示例中,我们采用了接口 ICalc<m>,它定义了一个名为 square_root 的方法,该方法接受泛型类型 m 的参数。之后,它创建一个类 dCalc 并使用 double 类型实现接口。在 square_root 方法中,它计算数字的平方根。在主方法中,我们使用接口 ICalc<double> 创建一个对象,然后调用 square_root 方法并打印输出。 4) 泛型委托在 C# 中,泛型委托是一种使用多个类型参数定义的委托,这使得它能够处理任何数据类型。如果我们不想为不同的数据类型创建委托,我们还可以定义一个泛型委托并将其与任何类型参数一起重用。 C# 泛型委托示例 让我们以一个例子来说明 C# 中的泛型委托。 示例编译并运行输出 The Addition of integers: 30 The Concatenation of strings: Hello, World! 说明 在此示例中,我们采用了泛型委托 Op<T>,它可以处理不同的参数。之后,我们创建方法来添加整数和连接字符串。在主方法中,委托与整数一起用于添加数字,与字符串一起用于连接文本。 5) 泛型集合在 C# 中,泛型集合是一种特殊类型的集合,用于安全地存储任何数据类型。这些集合定义在 System.Collections.Generic 命名空间中。它通常用于几种集合中,例如 List<T>、Dictionary<TKey, TValue>、Queue<T>、Stack<T> 等等。 C# 泛型集合示例 让我们以一个例子来说明 C# 中的泛型集合。 示例编译并运行输出 The numbers are: 8 16 32 The ages are: Michael: 45 Bravo: 50 Johnson: 35 说明 在此示例中,我们采用了 List<int> 来存储整数值,以及 Dictionary<string, int> 来存储姓名及其年龄。之后,我们使用 foreach 循环以类型安全的方式打印它们的值。 在 C# 中使用泛型的优点C# 中的泛型有几个优点。一些主要优点如下。 在这里,我们将逐一讨论这些优点。 1) 代码可重用性 在 C# 中,泛型通过使我们能够定义可以处理不同数据类型的单个方法、类或接口来提供代码可重用性。 2) 类型安全 泛型通过确保只使用指定的数据类型来提供更好的类型安全。它有助于在编译时而不是运行时发现错误,这使得代码更可靠和健壮。 3) 性能 泛型类型比非泛型类型提供更好的性能。它减少了几个不必要的操作,例如装箱、拆箱和显式类型转换。 4) 支持多个类型参数 在 C# 中,泛型类和方法可以接受多个类型参数。它提供了更大的灵活性、更通用和可重用的代码结构。 5) 集合 在 C# 中,泛型可以用于不同的集合,例如 List<T>、Dictionary<T, U> 等。它提供了类型安全和高效的数据结构。 结论总之,C# 泛型是一个重要的特性,它使我们能够定义带有数据类型占位符的类和方法。编译器在编译时将这些占位符替换为指定的类型。它允许我们定义一个可以与不同数据类型一起重用的单个方法或类。通过使用泛型类、方法、接口、委托和集合,我们可以创建更高效、更灵活和更易于维护的应用程序。 C# 泛型常见问题1) C# 中的泛型是什么? 在 C# 中,泛型是一个概念,它允许我们定义带有类型占位符的类和方法。编译器在编译时将这些类型占位符替换为指定的类型。它允许我们创建更灵活、类型安全和可重用代码的应用程序。 2) 我们可以在 C# 泛型中使用多个类型参数吗? 是的,我们可以在 C# 泛型中使用多个类型参数。 3) C# 中默认的 (T) 泛型是什么? 在 C# 中,默认的 (T) 是一个表达式,用于返回类型 T 的默认值。它通常用于编译时不知道特定类型的类和方法。 4) 定义 C# 中的泛型集合? 在 C# 中,泛型集合是一种特殊类型的集合,可以安全地存储任何数据类型。它定义在 System.Collections.Generic 命名空间中。它通常用于集合中,例如 List<T>、Dictionary<TKey, TValue>、Queue<T>、Stack<T> 等等。 5) C# 中泛型的缺点是什么? 如果在 C# 中泛型使用不正确,可能会导致代码复杂性增加并被滥用。它们可能会使初学者更难阅读代码,并且泛型的反射可能更复杂。但是,正确使用泛型可以减少这些类型的问题。 下一主题C# 委托 |
我们请求您订阅我们的新闻通讯以获取最新更新。