c#-7.0 - C# 7.0 本地函数与内联代码相比如何?
问题描述
Calc
考虑一个局部函数,例如
void Foo()
{
var a = 500f;
var seed = 0.5f;
var b = 2000 * Calc(a);
.... more code ....
seed = 0.7f;
if (Calc(5000) > 5)
{
}
double Calc(float f)
{
return Sin(f+ seed) * f;
}
}
本地函数正常使用,无需将其转换为委托。它与在两个地方内联代码相比如何:
- 它在语义上与内联不同吗?
- 变量等变量是如何
seed
传递给本地函数的?我希望编译器只是重写函数以接受来自调用站点的附加参数(ref float seed
在这种情况下)。但从我读过的内容来看,我认为它更复杂,并且可能使用捕获。但是没有关于这方面的明确文件。 - 是否曾经生成隐藏类?
- 无声拳击会出现吗?我希望不会,但 C# 是一种四四方方的语言。
- 简而言之,本地函数是否会比手动内联代码慢?是否始终设置单独的调用框架?
我发现了这个问题:Local function vs Lambda C# 7.0,但它并没有完全回答这个问题。
请注意,这个问题一般是关于局部函数的,而不仅仅是关于这个特定的例子。
解决方案
推荐阅读
- php - 在元素内回显 img
- reactjs - 禁用或隐藏工具提示而不管理提示状态(材料 UI)
- reactjs - 如何使用 8base 重新获取查询
- c# - 以前的值在我的 C# 列表中被覆盖
- c# - C# HttpClient - 如果在请求标头中将 UseCookies 设置为 false,是否可以从响应中获取 cookie?
- gsub - 使用R提取“..”之前的子字符串
- javascript - 如何在反应中动态导入声音文件?
- c# - 如何从 Web API 服务将作业发送到打印机或打印服务器
- laravel - Laravel (7) Resource Policies don't work with CamelCase, get a 403 for view policy (show in controller)
- influxdb - python influxdbclient - 如何将精度设置为秒?