当前位置:  开发笔记 > 编程语言 > 正文

委托中变量的范围

如何解决《委托中变量的范围》经验,为你挑选了1个好方法。

我发现以下内容相当奇怪.然后,我主要使用动态语言中的闭包,这对于同一个"bug"应该是不可怀疑的.以下使编译器不满意:

VoidFunction t = delegate { int i = 0; };

int i = 1;

它说:

名为"i"的局部变量不能在此范围内声明,因为它会给"i"赋予不同的含义,"i"已在"子"范围内用于表示其他内容

所以这基本上意味着在委托中声明的变量将具有声明的函数的范围.不完全是我所期望的.我甚至没有尝试过调用这个函数.至少Common Lisp有一个功能,你可以说变量应该有一个动态名称,如果你真的希望它是本地的.这在创建不泄漏的宏时尤其重要,但这样的东西也会有所帮助.

所以我想知道其他人如何解决这个问题呢?

为了澄清我正在寻找一个解决方案,其中我在delegete中声明的变量不会干扰委托声明的变量.我仍然希望能够捕获委托之前声明的变量.



1> Arjan Einbu..:

它必须是允许匿名方法(和lambdas)使用包含方法中的局部变量和参数的方式.

解决方法是为变量使用不同的名称,或者创建一个普通的方法.


委托不具有独立的范围,而不是if或foreach代码块.详情请见我的回答.
推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有