温馨提示×

typeof c#在泛型中的应用

c#
小樊
82
2024-12-04 23:22:16
栏目: 编程语言

在C#中,typeof关键字用于获取一个类型的类型信息。在泛型中,typeof可以用于获取泛型参数的类型信息,从而在编译时进行类型检查和类型转换。

下面是一个使用typeof在泛型中的应用示例:

public class GenericClass<T>
{
    private readonly T _value;

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

    public T GetValue()
    {
        return _value;
    }

    public void SetValue(T value)
    {
        _value = value;
    }

    public static void PrintType<U>(U item)
    {
        Console.WriteLine($"The type of U is: {typeof(U)}");
    }
}

class Program
{
    static void Main(string[] args)
    {
        GenericClass<int> intInstance = new GenericClass<int>(42);
        GenericClass<string> stringInstance = new GenericClass<string>("Hello, World!");

        Console.WriteLine($"The type of T in GenericClass<int> is: {typeof(GenericClass<int>).GetGenericTypeDefinition()}");
        Console.WriteLine($"The type of T in GenericClass<string> is: {typeof(GenericClass<string>).GetGenericTypeDefinition()}");

        GenericClass.PrintType(42); // The type of U is: System.Int32
        GenericClass.PrintType("Hello, World!"); // The type of U is: System.String
    }
}

在这个示例中,我们定义了一个泛型类GenericClass<T>,它有一个类型为T的私有字段_value。我们还定义了一个静态方法PrintType<U>,它接受一个类型为U的参数,并打印出该参数的类型信息。

Main方法中,我们创建了两个GenericClass实例,一个用于int类型,另一个用于string类型。然后,我们使用typeof关键字获取这些实例的类型信息,并将其打印出来。最后,我们调用PrintType方法,分别传入intstring类型的参数,以展示如何使用typeof在泛型中获取类型信息。

0