-7

我有一个要设置的变量,Class1.SetVariable(variable);但它不会返回我设置的变量。该变量将等于 0 中的另一个函数Class2,而不是我想要的 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
    }
}

代码差不多就是这样。

4

2 回答 2

3

首先,在 C# 中,通常最好将其设为Property而不是带有“set 方法”的字段:

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);
    }
于 2012-12-06T21:31:37.397 回答
1

如果你想Class1成为“全局”,它必须是静态的:

public static class Class1

于 2012-12-06T21:32:26.997 回答