delegate int Add(); class Program { static void Main(string[] args) { MyClass myclass=new MyClass (); Add add = myclass.add1; int result1 = add();//此處添加用以個(gè)result1來接收調(diào)用委托的返回值 add += myclass.add2; add += myclass.add1; Console.WriteLine("最后value的值:{0}", myclass.value);//為什么加了result1后value的值就會改變呢?而不加result1時(shí)Value值就不會改變,我覺得value是值類型加不加都不應(yīng)該改變啊 Console.WriteLine("第一次返回的值:{0}", result1); Console.WriteLine("最后的結(jié)果:{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時(shí)Value值就不會改變,我覺得value是值類型加不加都不應(yīng)該改變啊 ,請求高手指點(diǎn)一二
2 回答

隔江千里
TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
= =才疏學(xué)淺,真沒看出來哪兒和傳參有關(guān)系了。MyClass的Add1、2兩個(gè)方法都直接操作了成員value,這里把委托理解成函數(shù)指針類似的東西思考,Add()就是myclass.Add1(),value當(dāng)然要變了。
- 2 回答
- 0 關(guān)注
- 516 瀏覽
添加回答
舉報(bào)
0/150
提交
取消