【发布时间】:2023-03-14 17:51:01
【问题描述】:
以下给我一个编译器错误:
private ObservableEventListener Listener { get; private set; }
public static void Register()
{
Log.Listener = new ObservableEventListener();
Log.Listener.EnableEvents(Log, EventLevel.LogAlways, EventKeywords.None);
}
错误 26“MyEventSource.Listener.set”访问器的可访问性修饰符必须比属性或索引器“MyEventSource.Listener”更严格
但这编译得很好:
private ObservableEventListener Listener;
public static void Register()
{
Log.Listener = new ObservableEventListener();
Log.Listener.EnableEvents(Log, EventLevel.LogAlways, EventKeywords.None);
}
似乎支持 setter 方法的安全性更高?总是有多余的代码/警告行..为什么这是一个错误?
【问题讨论】:
-
您已经将
Listener声明为private,因此setter 上的private是多余的。删除它。 -
你试过没有
set上的“私人”吗?它已经是一个私有成员,所以加倍条件不会做任何事情,并且可能会根据给出的错误规则吓坏编译器。 -
好的,但为什么会出错?总是有多余的代码行/警告..为什么这是一个错误?
-
@BradleyDotNET 是的,这应该是一个错误:这里的修饰符 必需 是“更具限制性”。私有并不比私有更严格,因此它失败了
-
@TMcKeown 这很容易解决:
/warnaserror+- 你去吧:现在他们都同样挑剔;p
标签: c#