gpt4 book ai didi

c# - 使用 Lambda 属性 - 编译器

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:40 25 4
gpt4 key购买 nike

如果有人能帮我解决一个问题,我只是无法理解一些 C# 接口(interface)方法等。我注意到有几次我在使用时实际上无法访问我所在的类=> 表达式。

但是,一个简单的长期修改(在下面评论)很容易修复它。我不确定我看到有什么不同...我试过用 { } 标记等来换行。真的可以使用一些智慧 - 谢谢!

public interface In1
{
int MyProperty { get; }
bool Check { get; }
}

class TestProp : In1
{
public int MyProperty => if (Check) return 1; else return 0; //ERROR THE NAME CHECK DOES NOT EXIST IN THE CURRENT CONTEXT

public bool Check => true;
/* will compile
public int MyProperty
{
get { if (Check) return 1; else return 0; }
}
*/
}

最佳答案

这叫做 expression bodied member (使用 =>)。它只接受一行。您的 if else 无效,因为它是多行。试试看

public int MyProperty => Check ? 1 : 0;

这使用了 ternary运算符使其成为单个语句。

get 之所以有效,是因为它被括在大括号中,不再需要是一行。如果你做了 get => if (Check) return 1; else return 0; 你会得到同样的错误。

关于c# - 使用 Lambda 属性 - 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49808160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com