我一直想知道为什么我的变量没有保存数据。这是我的代码
class MainProg
{
public string name;
static void Main()
{
MainProg m = new MainProg();
m.Start();
}
public void Start()
{
Register rs = new Register();
Register r = (Register)rs;
r.run();
Console.WriteLine(name);
}
}
class Register : MainProg
{
public void run()
{
name = "a";
}
}
我忘了什么吗?每当我试图显示输出时它什么都没有。谢谢你抽出时间。
答案 0 :(得分:5)
这样可行。
class MainProg
{
static void Main()
{
Register rs = new Register();
Register r = (Register)rs;
r.run();
Console.WriteLine(r.name);
}
}
class Register : MainProg
{
public string name;
public void run()
{
name = "a";
}
}
你的代码失败的原因是你正在创建一个Register实例,它与MainProg是分开的,即使它继承了它。您在新实例中设置变量,然后从旧实例中读取它。
答案 1 :(得分:2)
name
是一个实例字段,因此您需要引用object
。
尝试,
Console.WriteLine(r.name);
答案 2 :(得分:1)
因为您正在更改名为r
的Register实例中的名称,所以您在MainProg实例中打印var名称。
要证明它尝试:
Console.WriteLine(r.name);
答案 3 :(得分:0)
由于您尝试访问静态函数内的成员变量,因此会抛出编译错误。
尝试使用
之类的对象访问变量Console.WriteLine(r.name);
答案 4 :(得分:0)
问题是您正在尝试从此对象中写入名称。您更改的变量位于另一个对象'r'。