using System.Collections.Generic; using System.Text; using System; namespace ConsoleApplication1 { class Value { public int i = 15; } class Program { static void Main(string[] args) { Program t = new Program(); t.first(); } public void first() { int i = 5; Value v = new Value(); v.i = 25; second(v, i); Console.WriteLine(v.i); //20 ?????看不懂 郁闷的问题 //因为在second里,v.i的值被赋为20 //之后再second中,v=val;v的引用变成了val,但是此方法中的v还是原来的那个 } public void second(Value v, int i) { i = 0; v.i = 20; Value val = new Value(); v = val; Console.WriteLine(v.i + " " + i + " ");//15,0 可以理解 } } }