CA1000:不要在泛型型別上宣告靜態成員
型別名稱 |
DoNotDeclareStaticMembersOnGenericTypes |
CheckId |
CA1000 |
分類 |
Microsoft.Design |
中斷變更 |
中斷 |
原因
外部可見的泛型型別包含 static (在 Visual Basic 中為 Shared) 成員。
規則描述
呼叫泛型型別的 static 成員時,必須為型別指定型別引數。 呼叫不支援介面的泛型執行個體 (Instance) 成員時,必須為成員指定型別引數。 在上述兩種情況下指定型別引數的語法不同且容易混淆,如下列呼叫所示範:
' Shared method in a generic type.
GenericType(Of Integer).SharedMethod()
' Generic instance method that does not support inference.
someObject.GenericMethod(Of Integer)()
// Static method in a generic type.
GenericType<int>.StaticMethod();
// Generic instance method that does not support inference.
someObject.GenericMethod<int>();
一般而言,這兩者都應該避免先宣告,如此在呼叫成員時才不必指定型別引數。 呼叫泛型成員的語法結果會與呼叫非泛型的語法結果相同。 如需詳細資訊,請參閱CA1004:泛型方法應該提供型別參數。
如何修正違規
若要修正此規則的違規情形,請移除靜態成員,或將它變更為執行個體成員。
隱藏警告的時機
請勿隱藏此規則的警告。 使用易於了解和使用的語法提供泛型,以便減少學習所需的時間,並增加新程式庫的採用率。