共用方式為


CA1012:抽象型別不應具有建構函式

型別名稱

AbstractTypesShouldNotHaveConstructors

CheckId

CA1012

分類

Microsoft.Design

中斷變更

中斷

原因

公用 (Public) 型別為抽象的且具有公用建構函式。

規則描述

只有衍生型別 (Derived Type) 可以呼叫抽象型別上的建構函式。 因為公用建構函式會建立型別的執行個體,而且您無法建立抽象型別的執行個體,因此具有公用建構函式的抽象型別設計不正確。

如何修正違規

若要修正此規則的違規情形,請使建構函式受到保護,或者勿將型別宣告為抽象。

隱藏警告的時機

請勿隱藏此規則的警告。 抽象型別具有公用建構函式。

範例

下列範例包含違反此規則的抽象型別。

Imports System     

Namespace Samples

    ' Violates this rule      
    Public MustInherit Class Book 

        Public Sub New()          
        End Sub 

    End Class 

End Namespace 
using System;

namespace Samples  
{   
    // Violates this rule      
    public abstract class Book      
    {          
        public Book()          
        {          
        }      
    } 
}

下列範例透過將建構函式的存取範圍從 public 改成 protected,以修正前述的違規情形。

Imports System     

Namespace Samples

    ' Violates this rule      
    Public MustInherit Class Book 

        Protected Sub New()          
        End Sub 

    End Class 

End Namespace 
using System;

namespace Samples  
{   
    // Violates this rule      
    public abstract class Book      
    {          
        protected Book()          
        {          
        }      
    } 
}