作为GitHub上Roslyn文档的一部分,有一个名为语言功能实现状态的页面,具有C#和VB的计划语言功能.
我无法理解的一个功能是private protected访问修饰符:
private protected string GetId() { … }
Run Code Online (Sandbox Code Playgroud)
还有一个C#语言设计笔记页面,它解释了许多新功能,但不是这个.
Eric Lippert在评论中说:
您的错误在于将修饰符视为增加限制.实际上,修饰符总是减少限制.请记住,默认情况下,事物是"私人的"; 只有通过添加修饰符才能减少限制.
是什么意思private protected?我什么时候可以使用它?
我有一个问题,想要一个属性有一个内部getter和一个受保护的setter,如本问题所述,我想我通过执行以下操作解决了这个问题:
public class Accessor : AccessorBase
{
private Connection _connection;
protected void setConnection(Connection value)
{
_connection = value;
}
internal Connection GetConnection()
{
return _connection;
}
...
}
Run Code Online (Sandbox Code Playgroud)
但是,我现在收到此错误:
可访问性不一致:参数类型"连接"比方法"setConnection(连接)"更难访问
这是因为我有internal class Connection.我宁愿不做Connection公开课,同时Accessor 需要公开,所以如何在保持内部getter和受保护的setter的同时解决这个错误呢?