首页 / 更多教程 / 匿名函数是否在循环中占用更多内存
匿名函数是否在循环中占用更多内存
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了匿名函数是否在循环中占用更多内存,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含983字,纯文字阅读大概需要2分钟。
内容图文
![匿名函数是否在循环中占用更多内存](/upload/InfoBanner/zyjiaocheng/949/7484218dff9a4b2883c31036b2467e89.jpg)
我在想.以下代码段是否消耗比第二个更多的内存
List<Action> myList = new List<Action>();
for(int i = 0; i < 10000; i++)
{
myList.Add(() => { /* Code */});
}
这次,我指出一种方法.
List<Action> myList = new List<Action>();
for (int i = 0; i < 10000; i++)
{
myList.Add(myFuntion);
}
void myFuntion()...
我想知道第一个代码段是否使用更多的内存,因为它必须存储匿名方法.还是每次都指向同一个匿名函数
并且第二个代码段指向函数还是每次都存储整个函数
谢谢
解决方法:
我不能肯定地说出.NET,但总的来说,这取决于匿名函数是否从交出函数中捕获任何元素(例如您的示例中的myList).如果不存在,则可以由编译器将其更改为具有编译器生成的名称的常规静态函数.
如果捕获了某些内容,则编译器必须生成并分配一个额外的数据结构,该数据结构存储捕获的变量,并将其用作编译器生成的函数的参数.例如.如果您这样做myList.Add(()=> {var z = myList.Count; ….});编译器需要为此生成如下内容:
class GenertedEnv
{
public List<Action> myList;
}
static void AnonymousFunction(GeneratedEnv env, /* Plus other lambda parameters*/)
{
var z = env.myList.Count;
...
}
内容总结
以上是互联网集市为您收集整理的匿名函数是否在循环中占用更多内存全部内容,希望文章能够帮你解决匿名函数是否在循环中占用更多内存所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。