Closed zhangchao19781124 closed 6 years ago
最近看了一下别人的代码,隐约突然想起一个问题,如果我定义一个委托方法Func,Action=对象#Private方法,当我通过外部属性修改了方法内引用的变量时候,是否会导致委托方法调用时候变量值变化呢 namespace ConsoleApp4 { public class UserDelegatedClass { public string Name { get; set; } public int Age { get; set; } public void Write() { Console.WriteLine("Age:" + this.Age + " " + " Name:" + this.Age); } } class Program { static void Main(string[] args) { UserDelegatedClass aClass = new UserDelegatedClass(); aClass.Age = 18; aClass.Name = "小委托"; Action at = aClass.Write; at(); Console.WriteLine("改变委托函数内涉及的变量内容"); aClass.Age = 19; aClass.Name = "小委托(19)"; at(); Console.ReadKey(); } } } 运行结果如下: Age:18 Name:18 改变委托函数内涉及的变量内容 Age:19 Name:19 发现确实有闭包存在,同时修改函数内变量内容,会影响执行结果,这么看来JavaScript的闭包概念也不是独有的了 哈哈~
最近看了一下别人的代码,隐约突然想起一个问题,如果我定义一个委托方法Func,Action=对象#Private方法,当我通过外部属性修改了方法内引用的变量时候,是否会导致委托方法调用时候变量值变化呢 namespace ConsoleApp4 { public class UserDelegatedClass { public string Name { get; set; } public int Age { get; set; } public void Write() { Console.WriteLine("Age:" + this.Age + " " + " Name:" + this.Age); } } class Program { static void Main(string[] args) { UserDelegatedClass aClass = new UserDelegatedClass(); aClass.Age = 18; aClass.Name = "小委托"; Action at = aClass.Write; at(); Console.WriteLine("改变委托函数内涉及的变量内容"); aClass.Age = 19; aClass.Name = "小委托(19)"; at(); Console.ReadKey(); } } } 运行结果如下: Age:18 Name:18 改变委托函数内涉及的变量内容 Age:19 Name:19 发现确实有闭包存在,同时修改函数内变量内容,会影响执行结果,这么看来JavaScript的闭包概念也不是独有的了 哈哈~