Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Expand Minimize

CA1052: Static holder types should be sealed







Breaking Change


A public or protected type contains only static members and is not declared with the sealed (C# Reference) (NotInheritable (Visual Basic)) modifier.

This rule assumes that a type that contains only static members is not designed to be inherited, because the type does not provide any functionality that can be overridden in a derived type. A type that is not meant to be inherited should be marked with the sealed modifier to allow its use as a base type.

To fix a violation of this rule, mark the type as sealed. If you are targeting .NET Framework 2.0 or earlier, a better approach is to mark the type as static. In this manner, you avoid having to declare a private constructor to prevent the class from being created.

Suppress a warning from this rule only if the type is designed to be inherited. The absence of the sealed modifier suggests that the type is useful as a base type.


The following example shows a type that violates the rule.


Imports System

Namespace DesignLibrary

    Public Class StaticMembers

        Private Shared someField As Integer 

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

        Private Sub New()
        End Sub

        Shared Sub SomeMethod()
        End Sub

    End Class

End Namespace


The following example shows how to fix a violation of this rule by marking the type with the static modifier.


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();

Community Additions

© 2015 Microsoft