如何访问abtsract类的受保护成员?假设我的课程定义如下
public abstract class BaseClass
{
private int index ;
protected int GetIndex
{
get { return index ;}
set { index = value; }
}
}
public class MyClass : BaseClass
{
...
}
public class TestClass
{
var data = new MyClass()
var index = data.GetIndex;
}
该行
var index = data.GetIndex;
抱怨由于它的保护级别无法访问。如何在TestClass中访问MyClass的GetIndex属性?
-Alan -
答案 0 :(得分:4)
您的问题正是受保护的用途。
保护字段/方法不被用于基类或子类的外部。 TestClass不是从BaseClass或MyClass派生的;你有没有得到 GetIndex 。它是如此简单。
因此,您的选项空间是:
该列表中没有特定的顺序;但显然,选项3在这里是“最差”的选择。
答案 1 :(得分:1)
使用此:
public abstract class BaseClass
{
public int GetIndex { get; private set; }
public BaseClass() { GetIndex = 0; }
}
然后,您只能在BaseClass中设置 GetIndex (您的可靠索引是私有的)或:
public abstract class BaseClass
{
private int index;
public int GetIndex
{
get { return index; }
protected set { index = value; }
}
}