在struct中声明的新受保护成员

时间:2012-12-03 19:11:50

标签: c#

C#编译器抱怨包含new protected member declared in struct的以下代码。有什么问题?

struct Foo {
    protected Object _bar;
}

3 个答案:

答案 0 :(得分:6)

来自MSDN docs

A struct cannot be abstract and is always implicitly sealed.

看起来C#希望您使用“私有”而不是受保护。

答案 1 :(得分:2)

结构被隐式密封,因此您无法以任何方式创建后代,而protected modifier意味着只有此类型的实例和派生类型的所有实例都可以访问它。

答案 2 :(得分:1)

因为这是一个结构,所以不能覆盖它。似乎C#编译器希望像structs这样的密封类型使用'private'关键字而不是'protected'关键字,即使功能上没有任何区别。请改用:

struct Foo {
    private Object _bar;
}