变量不保存C#中的数据

时间:2012-07-13 11:01:10

标签: c# variables

我一直想知道为什么我的变量没有保存数据。这是我的代码

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";
  }
}

我忘了什么吗?每当我试图显示输出时它什么都没有。谢谢你抽出时间。

5 个答案:

答案 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'。