C# 为什么属性中需要大括号
我有这个财产C# 为什么属性中需要大括号,c#,properties,get,set,curly-braces,C#,Properties,Get,Set,Curly Braces,我有这个财产 /// <summary> /// The production date of the device is contained in its serial number. /// </summary> public DateTime Date { get { return SerialNumber.Date; } } 同样,不需要大括
/// <summary>
/// The production date of the device is contained in its serial number.
/// </summary>
public DateTime Date
{
get
{
return SerialNumber.Date;
}
}
同样,不需要大括号。我想这与:但是get没有实现()类似
get()
例如它只是一种语言设计,是这样考虑的。这就像是在担心兰博基尼汽车的车门是向上打开的,而不是像其他汽车一样向侧面打开。这都是关于语言设计的
有关此问题的完整Jon Skeet答案(指向描述此问题的语言规范的确切位置),请查看:
因为C#中的属性也可以有setter:
public DateTime Date
{
get return SerialNumber.Date;
set SerialNumber.Date = value;
}
那是行不通的。接球手在哪里结束,接球手在哪里开始
即使要添加多行,这些范围也是清晰的:
public DateTime Date
{
get { return SerialNumber.Date; }
set { SerialNumber.Date = value; }
}
现在我的问题是:为什么我在这里需要牙套,而我不想
标记范围的开始和结束,因为只有一行
代码
我认为对于C#编译器团队来说,实现一个单行程序属性非常好的东西太多了。这些括号不是用于范围块,而是语法的一部分。setter和getter实际上是方法,因此它类似于函数的语法 对于
if
语句,括号不是语法的一部分:
if (<condition>) <statement>
<type> <identifier> { get { <statements> } }
if()
对于属性getter,括号是语法的一部分:
if (<condition>) <statement>
<type> <identifier> { get { <statements> } }
{get{}
正如它们用于函数一样:
<type> <identifier>(<parameters>) { <statements> }
(){}
在我看来,它更像是一辆兰博基尼汽车的实现(坚持你的例子),一扇门向上开,另一扇门侧向开。@Mikedklerk:不是,请查看提供的链接。类和方法也需要大括号,正如尝试
/捕获
/最后
和其他一些构造一样。这类事情背后通常没有什么原因(正确地遵循编码约定会使这些特性成为一个毫无意义的问题)。getter从哪里结束,setter从哪里开始?
因为它在一行,我看不出有什么问题。