扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
匿名方法的实例数据成员用法
让我们在我们的示例中的''Program''类中定义一个新的实例方法,并使用示例类(译注:即''Program''类)一个实例数据成员。下面的代码显示了修改后的示例:
public class Program { public delegate void MyDelegate(); public static void Main(string[] args) { //实例数据成员测试 Program p = new Program(); for(int i=1;i<=5;i++) p.TestInstanceDataMembers(); } public void TestInstanceDataMembers() { MyDelegate d = delegate { Console.WriteLine("Count: {0}",++m_iCount); }; d(); } public int m_iCount = 0; } |
我们定义了一个新的实例方法:TestInstanceDataMembers,在''Program''类中这个方法定义了一个匿名方法,匿名方法使用了实例数据成员:隶属''Program''类的m_iCount。当这个示例编译时,C#编译器将创建一个private实例方法来包装这个在TestInstanceDataMembers中定义的匿名方法。C#编译器必须创建一个实例方法因为该方法需要访问''Program''类的实例数据成员。下面是这个示例程序集''Program''类的ILDASM视图。在图的下部选中部分显示了由C#编译器默默添加到''Program''类的新的private实例方法。
匿名方法的局部变量用法
到现在为止,我们对匿名方法如何工作以及内部如何实现有了一点基本的理解。从根本上说,C#创建了private方法来包装匿名方法。同时这些方法的签名与它们被分配到的委托相匹配。现在,让我们看看下面的代码:
public class Program { public delegate void MyDelegate(); public static void Main(string[] args) { int iTemp = 100; MyDelegate dlg = delegate { Console.WriteLine(iTemp); }; dlg(); } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者