C#中静态变量有什么用途?什么时候使用它?为什么不能在方法内声明静态变量?

120

我已经搜索了关于C#中静态变量的信息,但仍然不理解它的用途。另外,如果我尝试在方法内声明该变量,它将不允许我这样做。为什么呢?

我看过一些关于静态变量的例子。我知道我们不需要创建类的实例来访问该变量,但这还不足以理解其用途和何时使用它。

第二件事

class Book
{
    public static int myInt = 0;
}

public class Exercise
{
    static void Main()
    {
        Book book = new Book();

        Console.WriteLine(book.myInt); // Shows error. Why does it show me error?
                                       // Can't I access the static variable 
                                       // by making the instance of a class?

        Console.ReadKey();
    }
}

4
你是不是指的是“静态字段”? - Dennis
就像我们在类中声明静态整数i=5一样。 - Kartik Patel
3
VB.NET支持本地静态变量。他们必须实现它以保持与vb的兼容性。它生成的代码量巨大,局部静态变量很难处理,因为它们不是线程安全的。字段也不是线程安全的,但是每个人都期望如此。 - Hans Passant
如果您得到了想要的信息,请不要忘记将答案标记为已接受... - Pranay Rana
4
你可以通过类型(在这种情况下为 Book)访问静态变量/方法,而不是通过实例(book),因此更简单的解决方案是 Book.myInt - Jaider
12个回答

0

与会话变量相比,静态变量将对所有用户具有相同的值,因为我正在使用部署在服务器上的应用程序。如果两个用户访问应用程序的同一页,则静态变量将保存最新值,并向两个用户提供相同的值,而不像会话变量那样对每个用户都不同。因此,如果您希望在整个应用程序代码中使用一些常见且相同的值(包括应该在其中使用的值),则只需使用静态变量即可。


-2

静态变量会保留其上一次的值,直到程序退出。通过直接调用class_Name.Method()或class_Name.Property来使用静态变量,不需要对象引用。最常见的静态变量用法是C#的Math类。 Math.Sin()、Math.Cos()、Math.Sqrt()。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接