属性:内部获取、保护集

Dee*_*ena 7 c# properties

我有一个本身是内部的类,因此声明中的以下差异没有实际后果,但我想了解其背后的机制。

我有一个这样的财产:

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)

也不行。

Pra*_*ana 5

我认为你混淆了protectedinternal

internal - 表示该类型只能在程序集中访问。不在装配外。

protected- 表示该类型可以在给定类型和从基类型派生的类型中访问。

因此,如果您按照解释使用类似的内容,就会产生问题。

因此,如果您想实现这两个功能,您可以使用Protected internal- 这表示该类型可用于 in type 和 in 派生类型 ,并且仅在程序集中可用。