首先看,下面的例子:
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#的引用传递,即可以改变对象,也可以改变对象的值。
转载于:https://blog.51cto.com/simoniu/1226206