C# - 变量不是从另一个类设置的

时间:2012-12-06 21:29:00

标签: c# variables console-application

我有一个我想用Class1.SetVariable(variable);设置的变量,但它不会返回我设置的变量。变量将在Class2中的另一个函数中等于0,而不是我想要的50。有任何想法吗?代码:

更新:

class Class1 {
    public int rndk = 0;

    public int Rndk {
        get { return this.rndk; }
        set { this.rndk = value; }
    }
}

class Class2 {
    public Class1 instance = new Class1();

    public Class2() {
        Load();
        Check();
    }

    public void Load() {
        instance.Rndk = 50;
        Console.WriteLine(instance.Rndk);
        // returns 50
    }

    public void Check() {
        Console.WriteLine(instance.Rndk);
        // returns 0
    }
}

这就是代码。

2 个答案:

答案 0 :(得分:3)

首先,在C#中,通常最好将其设为 Property ,而不是使用“set method”的字段:

private int variable = 0;
public int Variable 
{ 
   get { return this.variable; }
   set { this.variable = value; }
}

这实际上是两种方法,但包含在更好的语法中。

至于实际问题,我怀疑问题是你的方法没有在Class1类的同一个实例上工作。确保您在Class1变量中使用相同的实例,而不是在每次方法调用时创建新实例。 (您现有的代码没有说明实际问题。)

例如,通过上述更改,这将起作用:

public class Class2
{
    private Class1 instance1 = new Class1();

    public Class2()
    { 
        instance1.Variable = 50;
    }

    public void Print()
    {
         // Using the same instance - will print 50
        Console.WriteLine("Instance value is {0}", instance1.Variable);
    }

答案 1 :(得分:1)

如果您希望Class1为“全局”,则必须是静态的:

public static class Class1