C#警惕匿名方法造成的变量共享实例分析

2019-12-26 14:11:13于丽

易采站长站为您分析C#警惕匿名方法造成的变量共享,以实例形式分析了C#的匿名方法造成变量共享的原因及对应的解决方法,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#警惕匿名方法造成的变量共享。,具体如下:

匿名方法

匿名方法是.NET 2.0中引入的高级特性,“匿名”二字说明它可以把实现内联地写在一个方法中,从而形成一个委托对象,而不用有明确地方法名,例如:

 

 
  1. static void Test()  { 
  2. Action<string> action = delegate(string value)  { 
  3. Console.WriteLine(value);  }; 
  4. action("Hello World");  } 

但是匿名方法的关键并不仅于“匿名”二字。其最强大的特性就在于匿名方法形成了一个闭包,它可以作为参数传递到另一个方法中去,但同时也能访问方法的局部变量和当前类中的其它成员。例如:

 

 
  1. class TestClass  { 
  2. private void Print(string message)  { 
  3. Console.WriteLine(message);  } 
  4. public void Test()  { 
  5. string[] messages = new string[] { "Hello", "World" };  int index = 0; 
  6. Action<string> action = (m) =>  { 
  7. this.Print((index++) + ". " + m);  }; 
  8. Array.ForEach(messages, action);  Console.WriteLine("index = " + index);