我有以下泛型类型的方法:
T GetValue<T>();
我想将 T 限制为原始类型,例如 int、string、float 但不是类类型。我知道我可以为这样的类类型定义泛型:
C GetObject<C>() where C: class;
我不确定原始类型是否可能以及如何。
我有以下泛型类型的方法:
T GetValue<T>();
我想将 T 限制为原始类型,例如 int、string、float 但不是类类型。我知道我可以为这样的类类型定义泛型:
C GetObject<C>() where C: class;
我不确定原始类型是否可能以及如何。
您可以使用它来将其限制为值类型:
where C: struct
您还提到了字符串。不幸的是,不允许使用字符串,因为它们不是值类型。
实际上,这在一定程度上起到了作用:
public T Object<T>() where T :
struct, IComparable, IFormattable, IConvertible, IComparable<T>, IEquatable<T>
要限制为数字类型,您可以获得为ValueType类定义的以下示例的一些有用提示
这是您要查找的内容:
T GetObject<T>() where T : struct;
您实际上要在该方法中做什么?可能您实际上需要 C 来实现 IComparable 或其他接口。在这种情况下,您想要类似的东西
T GetObject<T> where T: IComparable
如果您需要可以使用为托管类型(例如 sizeof 运算符)保留的语言功能的类型,请使用“非托管”。
where C: unmanaged