0

我刚刚发现,在 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
    }
  }
}
4

0 回答 0