【发布时间】:2012-04-27 11:01:45
【问题描述】:
这里,Person 是一个类,因此是一个引用类型,当我将它作为参数传递给另一个函数并在那里赋值时,它应该被更改。
为什么program.person 在调用ChangePerson 后在这里为空?
namespace IndirectlyPropertySet
{
class Program
{
public Person _person;
public Person person
{
get { return _person; }
set
{
if (_person != value)
{
_person = value;
}
}
}
static void Main(string[] args)
{
Program program = new Program();
ChangePerson(program.person);
// Why program.person is null after executing this ?
program.person = new Person() { Name = "b", Age = 2 };
}
static void ChangePerson(Person p)
{
Person pe = new Person() { Name = "a", Age = 1 };
p = pe;
}
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
}
【问题讨论】:
-
你在哪里设置 program.person 之前通过它?你需要写 program.person = new Person() { Name = "b", Age = 2 };在调用 changeperson() 和 morevoer 之前,我不确定你想得到什么作为输出