高级

泛型

预计阅读时间2 分钟 5 views

前言

C# 中的泛型允许我们创建可以用于不同数据类型的单个类或方法。这种功能有助于代码的重用,提高代码的灵活性和类型安全性。下面我们将学习如何在 C# 中创建泛型类和泛型方法。

作用

泛型的主要作用是实现代码的复用和类型安全。通过泛型,我们可以编写一次代码,然后在不同的数据类型上重复使用,从而避免了重复编写类似代码的需要。

使用场景

  1. 数据类型统一处理:当需要编写能处理不同数据类型的代码时,泛型提供了一种统一的解决方案。
  2. 集合类:泛型在集合框架中被广泛使用,如 List<T>Dictionary<K, V> 等。
  3. 算法复用:编写通用的算法,不需要考虑数据类型的具体实现细节。

示例

  1. C# 泛型类

以下是如何创建一个泛型类并创建其实例的示例:

using System;

// 定义一个泛型类 Student
public class Student<T>
{
    // 定义一个类型为 T 的变量
    public T Data { get; set; }

    // 定义 Student 类的构造函数
    public Student(T data)
    {
        Data = data;
        Console.WriteLine("Data passed: " + Data);
    }
}

class Program
{
    static void Main()
    {
        // 创建一个泛型类的实例,数据类型为 string
        Student<string> studentName = new Student<string>("Avicii");

        // 创建一个泛型类的实例,数据类型为 int
        Student<int> studentId = new Student<int>(23);
    }
}

输出

Data passed: Avicii
Data passed: 23

在这个例子中,我们定义了一个名为 Student 的泛型类,并创建了两个实例:studentNamestudentIdStudent<T> 的类型参数 T 分别被替换为 stringint 类型。

  1. C# 泛型方法

类似于泛型类,我们也可以创建一个可以用于任何数据类型的方法。这种方法称为泛型方法。例如:

using System;

// 定义一个泛型类 Employee
class Employee<T>
{
    // 定义一个泛型方法,显示传递的数据
    public void DisplayData(T data)
    {
        Console.WriteLine("The data passed is: " + data);
    }
}

class Program
{
    static void Main()
    {
        // 创建一个泛型类的实例,数据类型为 string
        Employee<string> employeeName = new Employee<string>();

        // 调用 DisplayData() 泛型方法,并传递一个字符串值 "Jack"
        employeeName.DisplayData("Jack");

        // 创建一个泛型类的实例,数据类型为 int
        Employee<int> employeeId = new Employee<int>();

        // 调用 DisplayData() 泛型方法,并传递一个整数值
        employeeId.DisplayData(123);
    }
}

输出

The data passed is: Jack
The data passed is: 123

在这个例子中,我们在泛型类 Employee<T> 中定义了一个泛型方法 DisplayData(),并用不同的数据类型调用了该方法。

  1. 带返回类型的泛型方法

我们还可以定义一个带有返回类型的泛型方法。例如:

using System;

// 定义一个泛型类 Movie
class Movie<T>
{
    // 定义一个返回 T 类型值的泛型方法
    public T DisplayData(T data)
    {
        return data;
    }
}

class Program
{
    static void Main()
    {
        // 创建一个泛型类的实例,数据类型为 string
        Movie<string> movieName = new Movie<string>();
        Console.WriteLine("Generics Method returns: " + movieName.DisplayData("Inception"));

        // 创建一个泛型类的实例,数据类型为 int
        Movie<int> movieRating = new Movie<int>();
        Console.WriteLine("Generics Method returns: " + movieRating.DisplayData(9));
    }
}

输出

Generics Method returns: Inception
Generics Method returns: 9

在这个例子中,我们定义了一个泛型方法 DisplayData(),它的返回类型也是泛型类型 T。方法可以返回任意类型的数据。

结语

泛型在 C# 中提供了一种强大的机制,可以实现代码的复用、提高类型安全性和灵活性。通过泛型,我们可以编写更通用、更易维护的代码。泛型不仅在自定义类和方法中非常有用,还被广泛应用于集合框架和其他系统组件中。

Leave a Comment

分享此文档

泛型

或复制链接

内容