【发布时间】:2020-03-03 20:23:59
【问题描述】:
在 C# 8.0 中,Static Local Functions are announced
谁能帮我解释一下为什么要将本地函数声明为静态函数?
文中给出的原因:
确保本地函数不会从封闭范围内捕获(引用)任何变量
但是:
- 我不明白为什么您要确保这一点?
- 是否有任何其他理由或好处将其声明为静态? (可能是性能?)
文中给出的示例代码为:
int M()
{
int y = 5;
int x = 7;
return Add(x, y);
static int Add(int left, int right) => left + right;
}
【问题讨论】:
-
在你的
Add方法中,因为它是静态的,你不能直接引用x和y,这就是你的引用的意思。 -
@DavidG 但问题是:有什么好处?
-
好问题。我也想不出我会使用它的场景,所以我很好奇。
-
@RenéVogt 在类中使用静态方法有什么好处?防止访问班级成员。
-
@RenéVogt 将
int M()更改为class M和return Add(x, y);更改为public int Foo() { return Add(x, y); },你就会明白我的意思了。方法的局部变量在概念上(从作用域的角度来看)类似于类的私有成员。
标签: c# .net static c#-8.0 local-functions