共用方式為


CA1052:靜態預留位置型別應該為密封的

型別名稱

StaticHolderTypesShouldBeSealed

CheckId

CA1052

分類

Microsoft.Design

中斷變更

中斷

原因

公用或保護的型別只包含靜態 (Static) 成員,因此不會利用 sealed (C# 參考) (NotInheritable (Visual Basic)) 修飾詞 (Modifier) 宣告它們。

規則描述

這項規則會假設只包含靜態成員的型別不是設計為繼承的,因為該型別不會提供可以在衍生型別 (Derived Type) 中加以覆寫的任何功能。預定不會繼承的型別應該以 sealed 修飾詞標記,以允許使用它做為基底型別 (Base Type)。

如何修正違規

若要修正此規則的違規情形,請將型別標示為 sealed。如果是以 .NET Framework 2.0 (含) 以前的版本為目標,比較好的做法是將型別標記為 static。使用這個方式,您可以避免必須宣告私用建構函式,以防止建立類別。

隱藏警告的時機

只有在型別是設計為繼承的,才能隱藏這項規則的警告。缺少 sealed 修飾詞,表示型別與基底型別一樣有用。

違規範例

ms182168.collapse_all(zh-tw,VS.110).gif描述

下列範例顯示違反規則的型別。

ms182168.collapse_all(zh-tw,VS.110).gif程式碼

Imports System

Namespace DesignLibrary

    Public Class StaticMembers

        Private Shared someField As Integer 

        Shared Property SomeProperty As Integer
            Get
                Return someField
            End Get
            Set
                someField = Value
            End Set
        End Property

        Private Sub New()
        End Sub

        Shared Sub SomeMethod()
        End Sub

    End Class

End Namespace
using System;

namespace DesignLibrary
{
    public class StaticMembers
    {
        static int someField;

        public static int SomeProperty
        {
            get
            {
                return someField;
            }
            set
            {
                someField = value;
            }
        }

        StaticMembers() {}

        public static void SomeMethod() {}
    }
}
using namespace System;

namespace DesignLibrary
{
    public ref class StaticMembers
    {
        static int someField;

        StaticMembers() {}

    public:
        static property int SomeProperty
        {
            int get()
            {
                return someField;
            }

            void set(int value)
            {
                someField = value;
            }
        }

        static void SomeMethod() {}
    };
}

使用 Static 修飾詞進行修正

ms182168.collapse_all(zh-tw,VS.110).gif描述

下列範例顯示如何藉由使用 static 修飾詞標記型別來修正這個規則的違規。

ms182168.collapse_all(zh-tw,VS.110).gif程式碼

using System; 

namespace DesignLibrary
{    
    public static class StaticMembers    
    {        
        private static int someField;     

        public static int SomeProperty        
        {            
            get { return someField; }            
            set { someField = value; }        
        }                

        public static void SomeMethod()         
        {        
        }         

        public static event SomeDelegate SomeEvent;    
    }     

    public delegate void SomeDelegate();
}

相關規則

CA1053:靜態預留位置型別不應包含建構函式