主要方法中的变量是否为静态

时间:2010-04-16 09:10:12

标签: c# .net static

众所周知,静态方法只能对静态成员起作用。

public static void Main()
{
    Test t1 = new Test();
}

此处Main方法是静态的,但我没有将t1声明为静态。它隐含着静态吗?

2 个答案:

答案 0 :(得分:23)

不,这是本地变量。无论它们是在静态方法还是实例方法中声明,局部变量的行为都是一样的。

作为非常粗略的指南(捕获变量等引入并发症):

  • 实例变量:每个实例一个变量
  • 静态变量:类型本身的一个变量
  • 局部变量(包括参数):每个方法调用的一个单独变量

答案 1 :(得分:10)

  

众所周知,静态方法只适用于静态成员

这不是事实;这是虚假的。没有任何限制;静态方法可以完全访问其类型的所有成员:

class C 
{
    private int x;
    static C Factory()
    {
        C c = new C();
        c.x = 123;
    }
}

工厂是一种静态方法;它可以访问任何C实例的私有实例成员。