密封类 - 为什么要删除公共构造函数?

时间:2010-02-22 15:35:57

标签: c#

我有一个班级,其存根如下所示。如果我不删除公共构造函数,代码分析会抱怨。但我很好奇为什么在密封课上这是必要的?下面显示的特定类仅包含静态方法。为什么包含私有构造函数只是为了删除公共构造函数是一种好习惯?

    public sealed class ParseFile
    {
        /// <summary>
        /// Remove the public constructor to satisfy CA1053.
        /// </summary>
        private ParseFile()
        {
        }
    }

5 个答案:

答案 0 :(得分:14)

如果只有静态方法,则将其声明为静态类,并且不再担心构造函数。

public static class ParseFile 
{ 
} 

答案 1 :(得分:11)

您没有收到此警告,因为该类已被密封,但因为它(实际上)是一个静态类。

公共构造函数意味着该类具有实例方法 - 不应该以其他方式做广告的类。

答案 2 :(得分:6)

  

如果你有一个只有的课程   共享方法,你为什么需要   创建它的实例?

     

仅包含共享的类的示例   方法,是System.Math类。它   有一个私有构造函数,因为它添加   没有任何好处(也没有任何意义)   它是可创造的。

编辑:来源http://social.msdn.microsoft.com/Forums/en-US/vstscode/thread/8addbc70-f720-4d0b-85ce-2bdf52e32f77

问题是我为什么要私有化,但为什么要保持公开。始终授予所需的最低访问权限。

答案 3 :(得分:3)

Sealed与Static不同。静态类意味着您无法使用new关键字创建类的实例。密封类意味着您无法创建从其继承的类。

答案 4 :(得分:2)

具有所有静态方法的类永远不需要构造函数,因为它没有使用new关键字进行实例化。所以你不需要公共构造函数。

相关问题