我有以下方法与通用的类型:如何定义基本类型的泛型类型限制?
T GetValue<T>();
我想至T限制为原始类型如int,串,浮点但不是类类型。我知道我可以像这样定义类的类型:
C GetObject<C>() where C: class;
我不确定原始类型是否可能,以及如果是这样。
我有以下方法与通用的类型:如何定义基本类型的泛型类型限制?
T GetValue<T>();
我想至T限制为原始类型如int,串,浮点但不是类类型。我知道我可以像这样定义类的类型:
C GetObject<C>() where C: class;
我不确定原始类型是否可能,以及如果是这样。
您可以使用它来限制它的值类型:
where C: struct
你还别说字符串。不幸的是,字符串不会被允许,因为它们不是值类型。
这里就是你要找的内容:
T GetObject<T>() where T : struct;
什么是你真正想要的方法呢?这可能是因为你实际上需要C来实现IComparable或其他接口。在这种情况下,你想要类似
T GetObject<T> where T: IComparable
没有通用的约束条件来匹配那些干净的事情。你究竟想要做什么?例如,您可以使用运行时检查(例如静态ctor)(对于泛型类型 - 对于泛型方法不太容易)来破解它...
但是;大多数时候,我看到这一点,这是因为人们希望的一个:
EqualityComparer<T>.Default
Comparer<T>.Default
但不能用于字符串以下的样品,其可为空 – 2009-04-30 03:47:56
当然,它可以让你通过任何用户定义的结构类型的一些有用的提示,不只是原始类型。除了定义所有内置基元类型的重载之外,我不确定是否有方法。 – 2009-04-30 03:49:14