【发布时间】:2013-06-26 07:59:13
【问题描述】:
我正在尝试将引用类型对象传递给一个方法并从那里更改它。当我更改它时,我没有对传递给方法的变量进行更改。
示例如下:
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()变量teacher仍然为空?谁能解释为什么?
我知道我可以在我的CreateTeacher() 方法上返回IPerson 或使用out,但我不能使用它们。
IPerson 接口在不同的 dll 中,Teacher 类在不同的 dll 中。方法CreateTeacher 与class 所在的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?
感谢您的帮助!
【问题讨论】:
-
这里为什么不能使用
return?
标签: c# methods interface reference-type