方法限制

时间:2018-06-26 06:14:51

标签: c# generics

我已经看到带有此where关键字的通用方法,例如

public static void DoStuff<T>() where T : 

where似乎以特定方式限制了T的类型。

问题:此where如何工作?是否只能限制使用where T : IComparable<T>之类的接口,还是还有其他方法?

1 个答案:

答案 0 :(得分:7)

它称为generic type parameter constraint

您可以约束T从基类继承,实现接口,成为引用类型,成为值类型,具有无参数构造函数...

编译器检查type参数是否满足这些要求。

在您的情况下,该约束允许在SELECT p.ID, p.EMAIL, 'Sales : ' + ', ' + cco.coordinator + ' | ' + (CASE cco.type WHEN 'SALES' THEN 'R.M : ' WHEN 'RELATIONSHIP MANAGER' THEN 'P.O : ' WHEN 'PROCESSING OFFICER' THEN 'P.C : ' WHEN 'PROCESSING CONSULTANT' THEN 'P.M : ' WHEN 'PROCESSING MANAGER' THEN 'A.C : ' WHEN 'ASSISTANT CONSULTANT' THEN 'N/A' END) AS Cordinators FROM tbl_client p INNER JOIN tbl_clientCoordinators cco on cco.client_ID = p.ID 方法中调用IComparable<T>方法。