gpt4 book ai didi

c# - “密封类中的 protected 成员”警告(单例类)

转载 作者:太空狗 更新时间:2023-10-29 20:47:42 25 4
gpt4 key购买 nike

我已经实现了一个单例类,但不断收到警告,指出我正在编写的方法是“在 seal 类中声明的新 protected 成员”。它不会影响构建,但我真的不想忽略警告,以防它在以后引起问题?我知道密封类是一个不能被继承的类——所以它的方法不能被覆盖,但我仍然不明白为什么下面的代码会给我警告(是因为使用了单例设计吗?):

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() 方法的。编辑:将 public void MethodName() 更改为 protected void MethodName()

最佳答案

警告是因为 protected 在不能继承的类中没有意义。对于 sealed 类,它在逻辑上与 private 完全相同。

这本身不是错误,但编译器试图提醒您注意这样一个事实,即使其成为 protected 而不是 private 不会给您带来任何好处,并且可能没有按照您的预期进行(如果您希望它对子类可见,而该子类不能存在于密封类中)。

所以,是的,您可以安全地忽略它,但是在 sealed 类中拥有 protected 成员在逻辑上是不一致的。

Compiler Warning CS0628 的 MSDN 条目

关于c# - “密封类中的 protected 成员”警告(单例类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8821961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com