Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.net中使用全局变量而不将其用作静态变量。?_C#_Asp.net - Fatal编程技术网

C# 如何在ASP.net中使用全局变量而不将其用作静态变量。?

C# 如何在ASP.net中使用全局变量而不将其用作静态变量。?,c#,asp.net,C#,Asp.net,有没有什么方法可以在c#中定义全局变量,它不应该是静态的,因为静态变量的值会在动态中发生变化 我认为您可以使用seision变量来实现这一点 Session["Key"]=value; 创建一个属性get和set,并在代码中使用。由于会话对于不同的用户是不同的,所以它可以正常工作 编辑1 此外,您还需要初始化页面加载,或在页面加载上设置一些值!ispostback,这样就不会出现空引用错误。一般来说,您应该尝试摆脱将这些东西视为全局变量的习惯。但是,类的实例成员的行为与“全局变量”相同,但仅

有没有什么方法可以在c#中定义全局变量,它不应该是静态的,因为静态变量的值会在动态中发生变化

我认为您可以使用seision变量来实现这一点

 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();
        }
    }
}