2014-07-17 65 views
0

在我的aspx.cs页面中,我有一个int静态变量,并将其传递给另一个类的构造函数,其中我有一个函数可以增加静态变量。然而,当执行完成时,当我回到我的aspx.cs页面我失去了我的静态变量值。清除通过构造函数传递的C#静态变量

aspx.cs页面

public static int one; 

//Im creating an object to test class 
Test t = new Test(ref int one); 
t.Increment(); 

测试Class.cs

public class Test { 

int _one; 

public Test(ref one) { 
    this._one = one; 
} 

public void Increment() { 
_one++; 
} 

} 

编辑

我有两个aspx.cs页面保存静态变量和测试类,它有递增函数,递增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++; 
} 

} 
+1

你没有在你的'Test'类(你不能)持有一个引用(指针)到静态变量'one'。 – EZI

+1

不知道为什么这个问题应该得到一个downvote? – Rahul

+0

您的技术在ASP.NET中无法使用。如果你可以增加静态变量,你可以为页面的所有用户增加它。 –

回答

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"); 
3

你的静态变量永远不会改变它的值。您通过引用Test构造函数来传递它,但是您只需将它的值复制到_one即可。和_oneIncrement变化对静态变量one没有影响。

3

的问题是在这里:

int _one; 

public Test(ref one) { 
    this._one = one; 
} 

即使你传递一个参考给变量one,要指定它的this._one。所以,当你增加你增加局部场,而不是引用中传递。

+0

如何按此顺序增加我的静态变量? – user2412230

+1

@ user2412230,如果你唯一的想法是增加那个静态变量,那么在你的增量方法中,只需说'classname.one ++;',其中'classname'是声明'one'的类的名称。 – Rahul

+1

你想完成什么?尝试持有对静态成员的引用来改变它听起来像一个奇怪的设计。 –