关于C#委托的一个问题

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是值类型加不加都不应该改变啊 ,请求高手指点一二


梵蒂冈之花
浏览 492回答 2
2回答

隔江千里

= =才疏学浅,真没看出来哪儿和传参有关系了。MyClass的Add1、2两个方法都直接操作了成员value,这里把委托理解成函数指针类似的东西思考,Add()就是myclass.Add1(),value当然要变了。
打开App,查看更多内容
随时随地看视频慕课网APP