-->

c# 父线程变量i在子线程中使用,父线程退出后,变量i在子线程中仍然正常,是什么原因?

2020-05-29 19:44发布

问题:

如下图,左边是函数TestThread代码,右边是循环执行TestThread 10次的结果。
我的疑问是:
父线程t1的变量 i 在子线程subT1中使用,父线程t1退出后(执行完空闲了),变量 i 在子线程中仍然正常使用,为什么?是因为作用域吗?
每个线程都有自己的堆栈,变量 i 是怎么存储的?

回答1:

subt1捕获了i这个变量, 变成了类似代码
class t1{
state;
i;
}
class subt1{
t1 t1instance;
work(){}
}