是否每次静态调用都会启动一个新线程?
例如:
class A
{
public static void displayName()
{
Console.WriteLine("myName");
}
public static void displayAge()
{
Console.WriteLine("myAge");
}
}
class B
{
public void Foo()
{
A.displayName();
A.displayAge();
}
}
上述调用会相互独立运行吗?如果是,那么它是不是类似于Threading?
最佳答案
回复关于静态调用的疑问:
But i heard each static call is independent of each other as there is no instance and only static members are involved. is it so? – Sri Kumar 36 mins ago
你可以认为你的类有一个“全局”实例,所有静态方法都由这个实例持有。
在您的示例中,您可以通过调用 ClassA myA = new ClassA()
创建“用户”实例。同时,会有一个“全局”实例,它由运行时创建但对您不可见,静态方法驻留在该实例中。静态方法作为此“全局”实例中的实例方法。
令人惊讶的是,在 C# 中有一个静态构造函数,当运行时初始化“全局”实例时将调用它。
您可以测试这段代码:
class A
{
static A() {
Console.WriteLine("Creating the global instance of class A....");
}
public static void displayName()
{
Console.WriteLine("myName");
}
public static void displayAge()
{
Console.WriteLine("myAge");
}
}
class B
{
public void Foo()
{
A.displayName();
A.displayAge();
}
}
输出将是:
Creating the global instance of class A....
myName
myAge
除此之外,静态方法与实例方法没有任何区别。
每个静态方法中的变量都有自己的范围,并且它们在一个方法与另一个方法之间是独立的。
关于c# - 静态方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1629184/