Person怎么没有变?

货郎大叔 2018-09-23 01:23:37

class Program
{
public static void ValueMethod(Person person)
{
person.name = "李四";
person = new Person();
}
static void Main()
{
Person person1 = new Person() ;
person1.name = "李四";
person1 = new Person();
Console.WriteLine(person1.name); //输出张三
Person person2 = new Person();
ValueMethod(person1);
Console.WriteLine(person1.name); //输出李四
Console.ReadKey();
}
}
class Person
{
public string name = "张三";
}

上面的代码中,ValueMethod方法首先将name修改为李四,然后把传入的person重新new了,为什么输出的name还是李四?
而person1却输出张三?
...全文
108 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
missing_sprite 2018-09-27
  • 打赏
  • 举报
回复
使用引用必须初始化且只能初始化一次
xuzuning 2018-09-23
  • 打赏
  • 举报
回复
ValueMethod(person1);
public static void ValueMethod(Person person) //person 是 person1 的引用
{
person.name = "李四"; //person1 的属性被修改
person = new Person(); //重新赋值就切断了对 person1 的引用
}
xuzuning 2018-09-23
  • 打赏
  • 举报
回复
这是编译器的约定,没有为什么
如果没有这个约定的话,几次调用就可能将所有的对象都变成一个了

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧