我正在尝试将引用类型对象传递给一个方法并从那里更改它。当我更改它时,我没有对传递给方法的变量进行更改。
这是示例:
public interface IPerson
{
string Name { get; }
}
public class Teacher : IPerson
{
public string Name { get; set; }
public string LastName { get; set; }
}
//......
public void CreateTeacher(IPerson teacher)
{
teacher = new Teacher() { Name = "Teacher name", LastName = "Teacher's last name"};
}
//.....
//I am trying this, but after I call CreateTeacher() variable teacher is null
IPerson teacher=null;
CreateTeacher(teacher);
string n = teacher.Name;
运行CreateTeacher()
变量教师后仍然为空?谁能解释为什么?我知道我可以返回IPerson
我的CreateTeacher()
方法或使用out
,但我不能使用它们。
IPerson
接口在不同的 dll 中,类Teacher
在不同的 dll 中。该方法CreateTeacher
与类所在的dll相同。
更新:
这是我尝试过的其他东西:
IPerson teacher=new Teacher();
CreateTeacher(teacher);
string n = teacher.Name;//I have the changes here now
//......
public void CreateTeacher(IPerson teacher)
{
((Teacher)teacher).Name = "My Name";
}
第一个例子和第二个例子有什么区别?是因为传递的值是null
吗?
谢谢您的帮助!