C#常量属性等效于lambda表达式

本文关键字:lambda 表达式 常量 属性 | 更新日期: 2023-09-27 18:22:46

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

private static float Width {
    get { return 0.012f; }
}

经过一点修改,我意识到这也很有效(lambda表达式?)。

private static float Width => 0.012f;

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

C#常量属性等效于lambda表达式

到底有什么区别?

这两种方法都定义了仅getter属性。后者只是使用了C#的新功能"Expression Bodied Members",特别是"Expression Boded Properties",它允许您使用胖箭头语法,而只是语法糖。

如果你看看编译器生成的内容,你会发现:

private static float Width
{
    get
    {
        return 0.012f;
    }
}

这与您的getter only声明相同。

这些也可以应用于一种线性方法:

public int Multiply(int x) => x * x;

这是C#6.0下语言的简化,称为"表达式体函数/属性"。

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

Visual Studio杂志在这里有一篇关于它的文章:https://visualstudiomagazine.com/articles/2015/06/03/c-sharp-6-expression-bodied-properties-dictionary-initializer.aspx

有相等的。

private static float Width => 0.012f;

Width是一个仅getter属性,就像您的第一个示例一样
区别仅仅是句法上的糖。

参考:https://github.com/dotnet/roslyn/wiki/Languages-features-in-C%23-6-和-VB-14