Kob*_*obi 132 c# access-modifiers c#-6.0 c#-7.2
作为GitHub上Roslyn文档的一部分,有一个名为语言功能实现状态的页面,具有C#和VB的计划语言功能.
我无法理解的一个功能是private protected访问修饰符:
private protected string GetId() { … }
Run Code Online (Sandbox Code Playgroud)
还有一个C#语言设计笔记页面,它解释了许多新功能,但不是这个.
Eric Lippert在评论中说:
您的错误在于将修饰符视为增加限制.实际上,修饰符总是减少限制.请记住,默认情况下,事物是"私人的"; 只有通过添加修饰符才能减少限制.
是什么意思private protected?我什么时候可以使用它?
Kob*_*obi 184
以下是维恩图中的所有访问修饰符,从更多限制到更多混杂:
private:

private protected: - 在C#7.2中添加

internal:

protected:

protected internal:

public:

Gog*_*utz 97
根据De Bill Evjen和Jay Glynn撰写的" Professional C#2008 ",第1699页:
private protected - "仅当前程序集中的派生类型"
C++/CLI具有类似的功能 - 定义和消费类和结构(C++/CLI)>成员可见性:
private protected- 或protected private- - 成员在程序集内受到保护,但在程序集外部是私有的.
Jep*_*sen 27
这只是为了提供不同可访问性级别的图形(使用http://ashitani.jp/gv/制作)(图像不适合注释).

每个箭头表示"比限制更多".
CLR的名称Private,FamilyANDAssembly,Assembly,Family,FamilyORAssembly,Public.
很久以后编辑:事实证明,这个漂亮的新访问级别(名字真的很差)最终没有包含在C#6.0中.它仅受C#7.2支持(我看到你更新了你的问题"标签").
| 归档时间: |
|
| 查看次数: |
10130 次 |
| 最近记录: |