我有一个我想用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
}
}
这就是代码。
答案 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