在 C# 中,泛型(Generic)是一种强类型参数化的编程特性,允许你编写具有通用性的代码,而不必在编写代码时指定具体的数据类型。泛型提供了更灵活、类型安全和可重用的代码。

以下是 C# 泛型的基本概念和用法:

1. 泛型类(Generic Class):
public class GenericClass<T>
{
    private T genericField;

    public GenericClass(T value)
    {
        genericField = value;
    }

    public T GetValue()
    {
        return genericField;
    }
}

在上述例子中,GenericClass<T> 是一个泛型类,T 是类型参数。通过使用 T,你可以创建一个可以用于不同类型的字段和方法的通用类。

2. 泛型方法(Generic Method):
public T GenericMethod<T>(T value)
{
    // 执行一些操作
    return value;
}

在上述例子中,GenericMethod<T> 是一个泛型方法,可以接受不同类型的参数。

3. 泛型接口(Generic Interface):
public interface IGenericInterface<T>
{
    T GetResult();
}

泛型接口可以用于定义具有通用性的接口。

4. 泛型委托(Generic Delegate):
public delegate void GenericDelegate<T>(T arg);

泛型委托可以用于定义具有通用性的委托。

5. 使用泛型集合:

C# 中的集合类通常是泛型的,例如 List<T>、Dictionary<TKey, TValue> 等。
List<int> intList = new List<int> { 1, 2, 3, 4, 5 };
Dictionary<string, int> keyValuePairs = new Dictionary<string, int>
{
    { "One", 1 },
    { "Two", 2 },
    { "Three", 3 }
};

泛型提供了更好的类型安全性,减少了装箱和拆箱的需要,并促进了代码的重用。

使用示例:
class Program
{
    static void Main()
    {
        // 使用泛型类
        GenericClass<int> intGenericClass = new GenericClass<int>(42);
        int result = intGenericClass.GetValue();
        Console.WriteLine(result);

        // 使用泛型方法
        string resultString = GenericMethod("Hello, Generic!");
        Console.WriteLine(resultString);

        // 使用泛型接口
        GenericInterfaceImplementation<int> implementation = new GenericInterfaceImplementation<int>(10);
        int interfaceResult = implementation.GetResult();
        Console.WriteLine(interfaceResult);
    }

    static T GenericMethod<T>(T value)
    {
        // 执行一些操作
        return value;
    }
}

public class GenericInterfaceImplementation<T> : IGenericInterface<T>
{
    private T result;

    public GenericInterfaceImplementation(T value)
    {
        result = value;
    }

    public T GetResult()
    {
        return result;
    }
}

这些示例展示了如何使用泛型类、方法、接口和集合,以及如何创建泛型委托。泛型是C#中强大而灵活的功能,能够提高代码的可读性和可维护性。




转载请注明出处:http://www.zyzy.cn/article/detail/14775/C#