7

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

struct Foo {
    protected Object _bar;
}
4

3 回答 3

9

MSDN 文档

A struct cannot be abstract and is always implicitly sealed.

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

于 2012-12-03T20:40:41.590 回答
2

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

struct Foo {
    private Object _bar;
}
于 2012-12-03T19:11:49.937 回答
2

结构是隐式密封的,因此您不能以任何方式创建后代,而受保护的修饰符意味着只有此类型的实例和派生类型的所有实例才能访问它。

于 2012-12-03T19:14:26.207 回答