参照型オブジェクトをメソッドに渡して、そこから変更しようとしています。それを変更すると、メソッドに渡される変数にその変更はありません。
次に例を示します。
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()
変数の教師を実行した後も null ですか? 誰でも理由を説明できますか?メソッドに戻るか、 を使用できることはわかって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";
}
1 番目の例と 2 番目の例の違いは何ですか? 渡された値がだったからnull
ですか?
助けてくれてありがとう!