我有一个本身是内部的类,因此声明中的以下差异没有实际后果,但我想了解其背后的机制。
我有一个这样的财产:
public String CreditedAs { get; protected set; }
Run Code Online (Sandbox Code Playgroud)
它编译得很好。getter 可以被任何有权访问该类的人读取,setter 只能在该类或由该类派生的类中读取。
现在当我尝试这个时:
internal String CreditedAs { get; protected set; }
Run Code Online (Sandbox Code Playgroud)
我明白了
The accessibility modifier of the '{class}.CreditedAs.set' accessor
must be more restrictive than the property or indexer '{class}.CreditedAs'
Run Code Online (Sandbox Code Playgroud)
这是为什么?和
protected String CreditedAs { internal get; set; }
Run Code Online (Sandbox Code Playgroud)
也不行。
我认为你混淆了protected
和internal
internal
- 表示该类型只能在程序集中访问。不在装配外。
protected
- 表示该类型可以在给定类型和从基类型派生的类型中访问。
因此,如果您按照解释使用类似的内容,就会产生问题。
因此,如果您想实现这两个功能,您可以使用Protected internal
- 这表示该类型可用于 in type 和 in 派生类型 ,并且仅在程序集中可用。