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

时间:2016-01-21 15:37:47

标签: .net closures

这实际上是一个.NET问题,但我想知道答案是什么。我之前已经读过,闭包被编译成.NET类。

通常它取决于实现,但我会惊讶地发现这部分不会在VS2015中进行优化。

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

EDIT2:

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()

这是一个简短的F#示例,所有函数都包含相同的变量。我可以想到更复杂的例子,但我在游戏项目中使用的而不是虚函数并没有那么复杂。

我从未真正意识到他们可以用面向对象编程取代多少,我想知道我能走多远。它们也很整洁,因为它们让我推迟考虑如何精确设计我的程序。

0 个答案:

没有答案