C# 如何在ASP.net中使用全局变量而不将其用作静态变量。?
有没有什么方法可以在c#中定义全局变量,它不应该是静态的,因为静态变量的值会在动态中发生变化 我认为您可以使用seision变量来实现这一点C# 如何在ASP.net中使用全局变量而不将其用作静态变量。?,c#,asp.net,C#,Asp.net,有没有什么方法可以在c#中定义全局变量,它不应该是静态的,因为静态变量的值会在动态中发生变化 我认为您可以使用seision变量来实现这一点 Session["Key"]=value; 创建一个属性get和set,并在代码中使用。由于会话对于不同的用户是不同的,所以它可以正常工作 编辑1 此外,您还需要初始化页面加载,或在页面加载上设置一些值!ispostback,这样就不会出现空引用错误。一般来说,您应该尝试摆脱将这些东西视为全局变量的习惯。但是,类的实例成员的行为与“全局变量”相同,但仅
Session["Key"]=value;
创建一个属性get和set,并在代码中使用。由于会话对于不同的用户是不同的,所以它可以正常工作
编辑1
此外,您还需要初始化页面加载,或在页面加载上设置一些值
!ispostback
,这样就不会出现空引用错误。
一般来说,您应该尝试摆脱将这些东西视为全局变量的习惯。但是,类的实例成员的行为与“全局变量”相同,但仅在每个请求的范围内:
public class MyPage : Page
{
private SqlConnection _conn;
protected void Page_Load(object sender, EventArgs e){
_conn = new SqlConnection(connectionString);
}
protected void btnInsert_Click(object sender, EventArgs e){
using (var command = new SqlCommand(commandString, _conn)){
command.ExecuteNonQuery();
}
}
}
请注意,在每个请求中,您都会得到一个新的SqlConnection实例—它的值不会像在上一个请求中那样。静态变量不会动态更改。问题是不同的——在对页面的所有请求中共享一个静态变量。相反,请使用
Session
state。我想在此上下文中给出一个场景,我想定义一个全局变量,该变量可由该类中的所有方法使用。但是asp.net只允许将is声明为静态,而如果其他用户使用同一类,则可以更改静态变量。所以现在我必须使用隐藏标签来存储全局值?还有其他方法吗?当你说类中的所有方法时,你指的是页面中的所有方法?只需创建一个非静态实例,在请求期间所有方法都可以使用它<代码>私有MyClass_myInstance=new MyClass()代码>我不认为这是离题的。我已经投票决定重新开放。我也认为这应该重新开放。我投票决定重新开业。
public class MyPage : Page
{
private SqlConnection _conn;
protected void Page_Load(object sender, EventArgs e){
_conn = new SqlConnection(connectionString);
}
protected void btnInsert_Click(object sender, EventArgs e){
using (var command = new SqlCommand(commandString, _conn)){
command.ExecuteNonQuery();
}
}
}