Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么属性中需要大括号_C#_Properties_Get_Set_Curly Braces - Fatal编程技术网

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从哪里开始?
因为它在一行,我看不出有什么问题。