我刚刚发现,在 C# 中,不仅可以在方法的顶级范围内声明本地函数,还可以在方法的嵌套范围内声明本地函数。我想知道这是否广为人知,我搜索并没有在任何地方看到它。你有什么想法?有点习惯于 Common Lisp,能够在方法内部的嵌套上下文中声明函数感觉很好。
我的实际用例是我有一个大的 foreach 遍历一组值,然后在父 foreach 中有几个 foreach 处理一些不同类型的形式并匹配父 foreach 的当前值。
private void localMethod(){
guard clauses
init code
foreach(var data in datalist){
foreach(var control in CheckBoxesList)
{
if(data.prop == control.prop){
do some specific stuff,
localCommonLogic(control)
}
}
foreach(var control in DropDownList)
{
if(data.prop == control.prop){
do some specific stuff,
localCommonLogic(control)
}
}
void localCommonLogic(control)
{
Sett common logic on "control" that does not care about the specific type of list.
"data" in in scope when this local function is declared here
}
}
}