单个函数中的多个闭包是否编译为单个类?(.NET)

单个函数中的多个闭包是否编译为单个类?(.NET),.net,closures,.net,Closures,这确实是一个.NET问题,但我想知道答案是什么。我以前读过闭包被编译成.NET类的文章 一般来说,这取决于实现,但我会惊讶地获悉,这一部分不会在VS2015中得到优化 编辑:这个问题不是重复的,因为它不是问什么是闭包,而是关于闭包的实现细节 编辑2: let math_func a = let mutable a = a let add b = a <- a + b let mult b = a <- a * b let div b = a <

这确实是一个.NET问题,但我想知道答案是什么。我以前读过闭包被编译成.NET类的文章

一般来说,这取决于实现,但我会惊讶地获悉,这一部分不会在VS2015中得到优化

编辑:这个问题不是重复的,因为它不是问什么是闭包,而是关于闭包的实现细节

编辑2:

let math_func a =
    let mutable a = a

    let add b = a <- a + b
    let mult b = a <- a * b
    let div b = a <- a / b
    let ret () = a
    add, mult, div, ret

let add, mult, div, ret = math_func 5
add 5
ret()
mult 4
ret()
div 2
ret()
让数学函数a=
设可变a=a

让我们添加b=一个可能的副本,为什么不试试看呢?你至少可以举例说明你的意思。(具体细节将取决于范围、闭包所使用的内容等。)@JonSkeet根据请求添加了一个示例。。。我只能说C#编译器会做什么。这将是特定于语言和编译器的。