gpt4 book ai didi

c# - 揭开 lambda 工作原理的神秘面纱

转载 作者:行者123 更新时间:2023-11-30 15:38:24 28 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Detailed Explanation of Variable Capture in Closures

public class Polynom {
public delegate double Func(double x);
private Func f;
public Polynom(params double[] coef) {
f = (double x) => {
double sum = 0;
for ( int i = 0 ; i < coef.Length ; i++ )
sum += coef[i] * Math.Pow(x,coef.Length-1-i);
return sum;
};
}
public double evaluate(double x) {
return f(x);
}
public static void Main() {
Polynom a=new Polynom(1,1,1);
Polynom b=new Polynom(2 , 2 , 0);
Console.WriteLine(a.evaluate(2));
Console.WriteLine(b.evaluate(2));
Console.ReadKey();
}
}

请注意 f 中的代码如何使用 coef,而 coef 是构造函数的参数。如果你考虑一下,除非它获得 coef 的引用副本,否则它不应该工作,因为一旦构造函数完成其工作,它的参数就应该消失。但不知何故,调用 f 设法使用 coef 就好像它仍然存在一样。怎么做?

如果有人能解释这个,我会喜欢一个很好的深入解释......

我想知道的另一件事是,代码在每个 Polynom 实例上都是相同的,但是每个实例是否都获得相同代码的另一个副本?如果是这样,有没有办法让我的类(class)只用该代码的 1 个副本运行? (比如以某种方式使其静态)

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com