首先看,下面的例子:

class Person{

int age;

String name;

Person(String name,int age)

{

 this.age = age;

 this.name = name;

}

}

public class Test {

public static void change(Person p)

{

 p = new Person("张飞",35);

}

public static void main(String[] args) {

  Person p = new Person("岳飞",50);

  Test.change(p);

  System.out.println(p.name+" "+p.age);

 }

}

------------------------------------------------

运行结果:岳飞 50

说明java中的引用传递本质来说还是值传递,不会改变对象。


再看下面的C#代码:


class Person {

       public string name { get; set; }

       public int age { get; set; }


       public Person(string name, int age)

       {

           this.name = name;

           this.age = age;

       }

   }

   class Program

   {

       public static void change(ref Person p)

       {

           p = new Person("张飞",35);

       }

       static void Main(string[] args)

       {

           Person p = new Person("岳飞",50);

           Program.change(ref p);

           Console.WriteLine(p.name +" "+p.age);

       }

   }

--------------------------------

运行结果:张飞 35

说明C#中的引用传递,是可以改变对象的。


总结:

 1.JAVA都是采用值传递,所有引用传递不会改变对象,但可以改变对象的值。

 2.C#的引用传递,即可以改变对象,也可以改变对象的值。