c# – ‘密封类中的受保护成员’警告(单例类)
发布时间:2020-12-15 18:19:43 所属栏目:百科 来源:网络整理
导读:我已经实现了一个单例类,并且不断收到警告,我正在编写的方法是一个’在密封类中声明的新受保护成员’.它不会影响构建,但我真的不想忽略警告,以防以后出现问题?我理解一个密封类是一个不能被继承的类 – 所以它的方法不能被覆盖,但我仍然不明白为什么下面的
我已经实现了一个单例类,并且不断收到警告,我正在编写的方法是一个’在密封类中声明的新受保护成员’.它不会影响构建,但我真的不想忽略警告,以防以后出现问题?我理解一个密封类是一个不能被继承的类 – 所以它的方法不能被覆盖,但我仍然不明白为什么下面的代码会给我警告(是因为使用了单例设计?):
namespace WPFSurfaceApp { public sealed class PresentationManager { PresentationManager() { } protected void MethodName() { } public static PresentationManager Instance { get { return Nested.instance; } } class Nested { // Explicit static constructor to tell C# compiler // not to mark type as beforefieldinit static Nested() { } internal static readonly PresentationManager instance = new PresentationManager(); } } 编辑:警告是关于MethodName()方法. 解决方法
警告是因为受保护在无法继承的类中没有意义.对于密封类,它在逻辑上与private完全相同.
这本身并不是一个错误,但是编译器试图引起你注意这样一个事实,即保护它而不是私有它将不会给你带来任何好处,也可能没有做你想要的事情(如果你打算让它可见子类,不能存在于密封类中). 所以,是的,您可以放心地忽略它,但在密封类中保护成员在逻辑上是不一致的. MSDN输入Compiler Warning CS0628 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |