众所周知,静态方法只能对静态成员起作用.
public static void Main()
{
Test t1 = new Test();
}
Run Code Online (Sandbox Code Playgroud)
这里的Main方法是静态的,但我没有声明t1为静态.它隐含着静态吗?
Jon*_*eet 23
不,这是一个局部变量.无论是在静态方法还是实例方法中声明,局部变量的行为都是相同的.
作为一个非常粗略的指南(捕获变量等引入并发症):
Eri*_*ert 10
众所周知,静态方法只能对静态成员起作用
这不是事实; 这是虚假的.没有任何限制; 静态方法可以完全访问其类型的所有成员:
class C
{
private int x;
static C Factory()
{
C c = new C();
c.x = 123;
}
}
Run Code Online (Sandbox Code Playgroud)
工厂是一种静态方法; 它可以访问任何C实例的私有实例成员.