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

标签 c# properties lambda

我再次选择了 C#,在长期使用 Java 后回来,正如您所料,我对属性非常感兴趣(哦,Java 的负担),因此我开始对它们进行一些探索并提出了这个.

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

经过一番修改,我意识到这也行得通(lambda 表达式?)。

private static float Width => 0.012f;

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

最佳答案

what is exactly the difference?

这两种方式都定义了一个 getter only 属性。后者只是使用 C# 6 的新特性 "Expression Bodied Members"。 ,特别是这些是“Expression Bodied Properties”,它允许您使用粗箭头语法并且仅仅是语法糖。

如果你看看 compiler generates 是什么,你会看到:

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

这与您的 getter only 声明相同。

这些也可以应用于单行方法:

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

关于C# - 常量属性是否等同于 lambda 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33824411/

相关文章:

python - 如何防止 lambda 函数局部变量在 python 中更改?

c# - WPF 中的页面与窗口?

delphi - 按名称设置属性值

c# - 在文本 block 文本 WPF 中使用 &

java - keySet() 或 propertyNames()。使用 propertyName() 可以吗?

java - 自动转换Java源中的属性文件

c# - Linq lambda 用于在列表中搜索列表,找到匹配项,然后将其从列表中删除

c++ - 如何在 C++0x 中缓存 lambda?

c# - 谷歌浏览器选择的文本

c# - 对大小为 n 的数组进行左旋转操作