在我的aspx.cs页面中,我有一个int静态变量,我将它传递给另一个类的构造函数,其中我有一个增加静态变量的函数。但是,当执行完成并且我回到我的aspx.cs页面时,我失去了我的静态变量值。
aspx.cs页面
public static int one;
//Im creating an object to test class
Test t = new Test(ref int one);
t.Increment();
Test Class.cs
public class Test {
int _one;
public Test(ref one) {
this._one = one;
}
public void Increment() {
_one++;
}
}
编辑
我有两个包含静态变量的aspx.cs页面和一个具有Increment函数的Test类,它增加了aspx.cs类的静态变量。当我创建Test类的对象但没有用时,我尝试通过ref传递。有人可以为我建议最好的设计。
one.aspx.cs
public static int one;
//Im creating an object to test class
Test t = new Test(ref int one);
t.Increment();
Two.aspx.cs
public static int Two;
//Im creating an object to test class
Test t = new Test(ref int Two);
t.Increment();
测试类
public class Test {
int _value;
public Test(ref one) {
this._value = one;
}
public void Increment() {
_value++;
}
}
答案 0 :(得分:3)
您的静态变量永远不会更改其值。您通过引用传递给Test
构造函数,但之后只需将其值复制到_one
。 _one
中Increment
的更改对静态变量one
没有影响。
答案 1 :(得分:3)
问题在于:
int _one;
public Test(ref one) {
this._one = one;
}
即使您将引用传递给变量one
,您也可以将值分配给this._one
。因此,当您递增时,您将增加本地字段而不是传入的引用。
答案 2 :(得分:1)
不确定这有多好,但让Increment
函数接受类名作为参数,如
public class Test {
public void Increment(string class_name)
{
if(class_name == "One")
One.one++;
else
Two.two++;
}
}
然后在你的.aspx页面中调用它
//one.aspx.cs
t.Increment("One");
//Two.aspx.cs
t.Increment("Two");