C#访问修饰符编译错误

时间:2014-04-29 12:38:05

标签: c# .net-3.5 access-modifiers

public List<ObjectA> ObjectAList
{
    get
    {
        return ObjectAList ?? new List<ObjectA>();
    }

    set;
}

&#39; ObjectAList.set&#39;必须声明一个正文,因为它没有标记为abstract,extern或partial

为什么?

2 个答案:

答案 0 :(得分:1)

该语言是如何运作的。

你不能做部分明确/隐含。

全部或全部。

当你隐式地这样做时,它只是写入一个自动生成的支持字段,但它想要做两面。 此外,即使集合有效,你的get也会出现堆栈溢出,因为你要调用get over over over而没有基本情况来结束递归。

答案 1 :(得分:1)

您正在尝试将Auto实现的属性与普通属性混合使用。此外,您需要一个支持字段,否则您将运行到Stackoverflow异常。您的财产声明应该是:

private List<ObjectA> _ObjectAList; //private backing field
public List<ObjectA> ObjectAList
{
    get
    {
        return _ObjectAList ?? new List<ObjectA>();
    }

    set
    {
        _ObjectAList = value;
    }
}