我有一个班级,其存根如下所示。如果我不删除公共构造函数,代码分析会抱怨。但我很好奇为什么在密封课上这是必要的?下面显示的特定类仅包含静态方法。为什么包含私有构造函数只是为了删除公共构造函数是一种好习惯?
public sealed class ParseFile
{
/// <summary>
/// Remove the public constructor to satisfy CA1053.
/// </summary>
private ParseFile()
{
}
}
答案 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关键字进行实例化。所以你不需要公共构造函数。