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