我写了下面的代码行,但一个错误被突出显示,如下:GET必须声明主体,它没有标记为抽象,EXTERN或部分
GET必须声明主体,它不标记为abstract ,extern或部分
我不明白是什么问题?为什么不能在不破坏get
的情况下调用一个方法?
public string NoteColour { get; set { SetFontColour(value); } }
我写了下面的代码行,但一个错误被突出显示,如下:GET必须声明主体,它没有标记为抽象,EXTERN或部分
GET必须声明主体,它不标记为abstract ,extern或部分
我不明白是什么问题?为什么不能在不破坏get
的情况下调用一个方法?
public string NoteColour { get; set { SetFontColour(value); } }
你如果两个get
和set
没有实现提供了get
的实现,因为编译器只允许自动实现的属性。
如果你实现其中任何一个,你也必须为另一个实现。
我希望有这样的事情:
public string NoteColour { get { return GetFontColor(); } set { SetFontColour(value); } }
虽然这解决了编译器问题,但它现在会创建一个相当不愉快的财产滥用,因为现在存在违反最小惊讶原则的风险。 OP最好直接暴露'GetFontColor()'和'SetFontColour()'方法。 –
不确定。出于某些目的,您希望拥有属性(例如,它们可以绑定到UI)。 –
啊,好点。你可以告诉我最近没有做任何装订,因为我忘了那个。 –
的错误提示,您需要为您的get
方法提供身体。所以如果你已经创建了自己的属性,那么你必须实现get和set或none。
public string NoteColour
{
get
{
return GetMethod();
}
set
{
SetFontColour(value);
}
}
如果你不写机构get
和set
宏被称为它增加了一个隐藏的私有字段为你的财产,以卖场实际值。这是必需的,因为属性没有与其关联的内存,并且只是像处理类对象的方法那样工作。它让你相信不会像以前那样编写令人厌恶的getter或setter方法。
如果你想做自定义的事情(别人而不是简单地封装一个字段),你必须声明两个bodys,因为宏不知道它应该返回哪个字段。
只是为了完整性:
private string noteColor = string.Empty;
public string NoteColour
{
get
{
return this.noteColor;
}
set
{
// add custom actions needed here
this.noteColor = value;
}
}
因为它是不明确的'GET'应该做的事情。如果它会自动生成一个字段,则永远不能设置该字段。 –