我已经看到带有此where
关键字的通用方法,例如
public static void DoStuff<T>() where T :
where
似乎以特定方式限制了T
的类型。
问题:此where
如何工作?是否只能限制使用where T : IComparable<T>
之类的接口,还是还有其他方法?
答案 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>
方法。