package 字符串;
public class person { private int age; public int getage() { return age; } public void setage(int age) { this.age = age; }
}
public class 值传递2 {
public static void main(string[] args)
{
person p1=new person();
p1.setage(10);
system.out.println("我在主函数里对p1的年龄属性赋值为"+p1.getage());
setage(p1);
system.out.println("我再从主函数里获取p1的年龄属性"+p1.getage());
}
public static void setage(person p1)
{
p1.setage(18); //不是我们对它的地址进行了操作,而是我们对它地址的内容进行了操作
system.out.println("我在调用函数里对p1的年龄属性重新赋值为"+p1.getage());
}
}
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace 值传递or引用传递
{
public class person
{
private int age;
public int getage()
{
return age;
}
public void setage(int age)
{
this.age = age;
}
}
class program
{
static void main(string[] args)
{
person p1 = new person();
person p2 = new person();
person p3 = new person();
p1.setage(10);
p2.setage(18);
p3.setage(15);
console.writeline("我在主函数里对p1的年龄属性赋值为" + p1.getage());
console.writeline("我在主函数里对p2的年龄属性赋值为" + p2.getage());
console.writeline("我在主函数里对p3的年龄属性赋值为" + p3.getage());
swap(ref p1,ref p2,p3);
console.writeline("************我是主函数里的分割线***************");
//我再在主函数里分别对p1,p2获取他们的年龄,若为引用传递则p1的年龄应该为18,p2为10.
console.writeline("我在主函数里获取p1的年龄" + p1.getage());
console.writeline("我在主函数里获取p2的年龄" + p2.getage());
console.writeline("我在主函数里获取p3的年龄" + p3.getage());
}
public static void swap(ref person p1,ref person p2, person p3)
{
console.writeline("************我是调用函数里的分割线***************");
person temp = new person();
temp = p1;
p1 = p2;
p2 = temp;
p3.setage(20);
console.writeline("我在调用函数里交换了p1和p2指向的地址");
console.writeline("我在调用函数里对p1交换地址后年龄为" + p1.getage());
console.writeline("我在调用函数里对p2交换地址后年龄为" + p2.getage());
console.writeline("我在调用函数里修改p3年龄为" + p3.getage());
}
}
}