我可以为每个范围内的变量指定一个值吗?

问题描述:

我可以给一个变量赋一个值(int),并且不会在任何范围内丢失这个值吗?
问题是我的值赋给在某些范围的变量,但该变量返回到其他范围内的默认值(零).. 例子:我可以为每个范围内的变量指定一个值吗?

protected void Button_AddNewCourse_Click(object sender, EventArgs e) 
{ 
    ID = 10; 
} 

所以,当我试图使用ID在其他功能中它回落到零

protected void AnotherFunction(object sender, EventArgs e) 
{ 
    // Variable ID here is zero 
} 
+3

这个问题是非常不清楚。一些示例代码会有很大的帮助。 – 2010-09-22 10:42:30

+0

抱歉不清楚......我真的不知道该怎么写,因为它太简单了。 – fadi 2010-09-22 10:52:20

变化看起来类似于此行(这可能是某处):

public int ID { get; set;} 

喜欢的东西

// keep the value of ID in this page only 
public int ID { get { return (int)ViewState["ID"]; } set { ViewState["ID"] = value; } } 

// keep the value of ID in every page 
public int ID { get { return (int)Session["ID"]; } set { Session["ID"] = value; } } 
+0

这就是我正在寻找,谢谢!...但我怎么能做到这一点在c#(无asp.net)的桌面应用程序? – fadi 2010-09-22 11:09:46

+0

使用'public static int ID {get;组; }'然后像'SomeForm.ID'那样调用变量。 – 2010-09-22 11:30:15

也许尝试使用readonly变量?

有人猜测,也许你是ASP.NET的新手,并没有弄清楚为什么页面级别的变量不会在回发之间保持状态。尝试在Session状态和Viewstate

或者一个概述阅读了:ASP.NET State Management Overview

例如根据你的代码示例,你可以使用一个会话条目存储值:

protected void Button_AddNewCourse_Click(object sender, EventArgs e) 
{ 
    Session["ID"] = 10; 
} 

protected void AnotherFunction(object sender, EventArgs e) 
{ 
    int tempID = (int)Session["ID"]; 
} 

还有很多其他的事情可以做也 - 使用视图状态,例如。