C#-常量属性是否等价于lambda表达式?

C#-常量属性是否等价于lambda表达式?,c#,properties,lambda,C#,Properties,Lambda,我再次学习了C#,在用Java做了很长时间的工作之后回来了,正如你所料,我对属性非常感兴趣(哦,Java负担),因此我开始对它们进行一些探索,并提出了这个 private static float Width { get { return 0.012f; } } 经过一点修补,我意识到这也是可行的(lambda表达式?) 现在请帮助这里的Java开发人员了解到底有什么区别?前者能做后者不能做的事,反之亦然 到底有什么区别 这两种方法都定义了一个getter-only属性。后者只是简单地

我再次学习了C#,在用Java做了很长时间的工作之后回来了,正如你所料,我对属性非常感兴趣(哦,Java负担),因此我开始对它们进行一些探索,并提出了这个

private static float Width {
    get { return 0.012f; }
}
经过一点修补,我意识到这也是可行的(lambda表达式?)

现在请帮助这里的Java开发人员了解到底有什么区别?前者能做后者不能做的事,反之亦然

到底有什么区别

这两种方法都定义了一个getter-only属性。后者只是简单地使用了C#6的新特性,即“表达式体属性”(Expression-body-Properties),它允许您使用胖箭头语法,并且只是语法糖

如果你看一看,你会发现:

private static float Width
{
    get
    {
        return 0.012f;
    }
}
这与您的getter-only声明相同

这些方法也可应用于单线法:

public int Multiply(int x) => x * x;
有平等的权利

private static float Width => 0.012f;
与第一个示例一样,
Width
是一个getter-only属性
区别仅仅是句法上的差异

参考:
这是C#6.0语言的简化,称为“表达式体函数/属性”

其思想是简化语法,并允许您以较短的格式设置函数和属性的值

Visual Studio杂志在此处有一篇关于它的文章:

有关C#6.0的更多信息,请查看:仅使用“表达式体属性”而不是手动编写仅getter属性是否有任何缺点?因为前者比后者可读性强得多。@G99它只是句法上的糖分,仅此而已。编译器仍然会在幕后生成相同的代码。使用你和你的队友认为更容易阅读的版本。你使用的是哪个版本的C#。C#6.0在初始化属性方面有一些新功能。@KarlGjertsen最新的可用功能!那么您就有这些新功能了!;-)我在下面添加了一个带有完整解释的答案。欢迎回到.NET!:-)@卡尔杰森谢谢你!使用Java主要是。。。一场灾难。我将使用这个新的“表达式体函数/属性”,而不是我以前的示例。当我在StackOverflow上对此进行研究时,我看到许多用户手动定义getter only属性,正如我现在看到的,这是一个过时的信息。
private static float Width => 0.012f;