get必须声明一个未标记为abstract,extern或partial的body

时间:2015-10-30 08:23:43

标签: c# .net properties

我在下面编写了代码行,但突出显示了一个错误:

  

get必须声明一个未标记为abstract,extern或partial

的正文

我不明白这是什么问题?为什么集合不能在不弄清get

的情况下调用方法
 public string NoteColour { get; set { SetFontColour(value); } }

3 个答案:

答案 0 :(得分:8)

您必须为get提供实现,因为如果getset都没有实现,编译器只允许自动实现的属性。

如果你实现其中任何一个,你也必须为另一个实现。

我希望有类似的东西:

 public string NoteColour { get { return GetFontColor(); } set { SetFontColour(value); } }

答案 1 :(得分:1)

错误表明您需要为get方法提供正文。因此,如果您已经创建了自己的属性,那么您必须同时实现get和set或者无。

public string NoteColour 
{ 
   get 
   { 
     return GetMethod(); 
   } 
   set 
   { 
     SetFontColour(value); 
   } 
}

答案 2 :(得分:0)

如果您没有为getset编写正文,则会调用一个宏,为您的属性添加隐藏的私有字段以存储实际值。这是必需的,因为属性没有与之关联的内存,只是像处理类对象的方法一样。它让你说服不要像过去那样编写explecit getter或setter方法。

如果你想做自定义事物(而不是简单地封装一个字段),你必须声明两个体,因为宏不知道它应该返回哪个字段。

为了完整性:

private string noteColor = string.Empty;

public string NoteColour
{
    get
    {
        return this.noteColor;
    }
    set
    {
        // add custom actions needed here
        this.noteColor = value;
    }
}