Dav*_*.ca 64 .net c# generics type-constraints
我有以下方法与泛型类型:
T GetValue<T>();
Run Code Online (Sandbox Code Playgroud)
我想将T限制为原始类型,如int,string,float,但不是类类型.我知道我可以像这样为类类定义泛型:
C GetObject<C>() where C: class;
Run Code Online (Sandbox Code Playgroud)
我不确定原始类型是否可能以及如果可能.
BFr*_*ree 46
您可以使用它将其限制为值类型:
where C: struct
Run Code Online (Sandbox Code Playgroud)
你还提到了字符串.不幸的是,不允许字符串,因为它们不是值类型.
小智 18
实际上,这在一定程度上完成了工作:
public T Object<T>() where T :
struct, IComparable, IFormattable, IConvertible, IComparable<T>, IEquatable<T>
Run Code Online (Sandbox Code Playgroud)
要限制数值类型,您可以获得为ValueType类定义的以下示例的一些有用提示
Jos*_*den 15
这是你要找的东西:
T GetObject<T>() where T : struct;
Run Code Online (Sandbox Code Playgroud)
你在这个方法中真正想做什么?可能实际上你需要C来实现IComparable或其他一些接口.在这种情况下你想要的东西
T GetObject<T> where T: IComparable
Run Code Online (Sandbox Code Playgroud)