C# 使用泛型可以将提供的类型限制为内置类型吗?

C# 使用泛型可以将提供的类型限制为内置类型吗?,c#,C#,我想将我的方法使用泛型接受的数据类型限制为内置类型: 内置类型: 该列表与值/引用类型不同。我想只支持内置的,而不是所有的值类型,ofc也支持字符串,它是一种引用类型 这可能吗 编辑: 使用约束,可以限制为以下值类型: T GetObject<T> where T: struct; T GetObject,其中T:struct; 这将不允许字符串通过 不,不幸的是这是不可能的 我认为你能做的最接近的事情如下: T GetObject<T>() { if (!(

我想将我的方法使用泛型接受的数据类型限制为内置类型:

内置类型:

该列表与值/引用类型不同。我想只支持内置的,而不是所有的值类型,ofc也支持字符串,它是一种引用类型

这可能吗

编辑:

使用约束,可以限制为以下值类型:

T GetObject<T> where T: struct;
T GetObject,其中T:struct;

这将不允许字符串通过

不,不幸的是这是不可能的

我认为你能做的最接近的事情如下:

T GetObject<T>()
{
    if (!(typeof(T) is typeof(int)
        || typeof(T) is typeof(uint)
        ...
        || typeof(T) is typeof(string)))
    {
        //Custom exception class for this purpose
        throw new TypeArgumentException("Invalid type parameter \"T\".");
    }

    ...
}
T GetObject()
{
如果(!(typeof(T)是typeof(int)
||typeof(T)是typeof(uint)
...
||typeof(T)是typeof(string)))
{
//用于此目的的自定义异常类
抛出新的TypeArgumentException(“无效的类型参数\“T\”);
}
...
}

不太好,但能完成任务。

不可能使用泛型


如果需要执行此操作并保留编译时检查,您唯一的选择是为方法提供具有不同参数类型的重载,以便涵盖所有内置类型。

看起来不像:只需为每种类型编写重载?您试图解决的问题是什么?可能重复而不是重复,我不是在寻找value+string,而是内置类型。