易采站长站为您分析C#警惕匿名方法造成的变量共享,以实例形式分析了C#的匿名方法造成变量共享的原因及对应的解决方法,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了C#警惕匿名方法造成的变量共享。,具体如下:
匿名方法
匿名方法是.NET 2.0中引入的高级特性,“匿名”二字说明它可以把实现内联地写在一个方法中,从而形成一个委托对象,而不用有明确地方法名,例如:
- static void Test() {
- Action<string> action = delegate(string value) {
- Console.WriteLine(value); };
- action("Hello World"); }
但是匿名方法的关键并不仅于“匿名”二字。其最强大的特性就在于匿名方法形成了一个闭包,它可以作为参数传递到另一个方法中去,但同时也能访问方法的局部变量和当前类中的其它成员。例如:
- class TestClass {
- private void Print(string message) {
- Console.WriteLine(message); }
- public void Test() {
- string[] messages = new string[] { "Hello", "World" }; int index = 0;
- Action<string> action = (m) => {
- this.Print((index++) + ". " + m); };
- Array.ForEach(messages, action); Console.WriteLine("index = " + index);










