为了账号安全,请及时绑定邮箱和手机立即绑定

关于C#委托的一个问题

关于C#委托的一个问题

梵蒂冈之花 2018-08-10 09:06:22
delegate int Add(); class Program { static void Main(string[] args) { MyClass myclass=new MyClass (); Add add = myclass.add1; int result1 = add();//此处添加用以个result1来接收调用委托的返回值 add += myclass.add2; add += myclass.add1; Console.WriteLine("最后value的值:{0}", myclass.value);//为什么加了result1后value的值就会改变呢?而不加result1时Value值就不会改变,我觉得value是值类型加不加都不应该改变啊 Console.WriteLine("第一次返回的值:{0}", result1); Console.WriteLine("最后的结果:{0}", add()); Console.ReadKey(); } } class MyClass { public int value = 5; public int add2() { value += 3; return value; } public int add1() { value += 2; return value; } } 不明白为什么加了result1后value的值就会改变呢?而不加result1时Value值就不会改变,我觉得value是值类型加不加都不应该改变啊 ,请求高手指点一二
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

= =才疏学浅,真没看出来哪儿和传参有关系了。MyClass的Add1、2两个方法都直接操作了成员value,这里把委托理解成函数指针类似的东西思考,Add()就是myclass.Add1(),value当然要变了。

查看完整回答
反对 回复 2018-08-13
  • 2 回答
  • 0 关注
  • 491 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信