문제

각 정적 호출은 새 스레드가 시작됩니까?

예를 들어 :

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

위의 통화는 서로 독립적으로 실행됩니까? 그렇다면 스레딩과 비슷한 것이 있습니까?

도움이 되었습니까?

해결책

정적 통화와 관련하여 의심에 대한 답변 :

그러나 인스턴스가없고 정적 멤버 만 관여하기 때문에 각 정적 호출이 서로 독립적이라고 들었습니다. 그렇습니까? - 스리 쿠마르 36 분 전에

수업의 '글로벌'인스턴스가 있다고 생각할 수 있으며이 경우 모든 정적 방법이 유지됩니다.

예에서와 같이 호출하여 '사용자'인스턴스를 만들 수 있습니다. 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

이 외에도 정적 메소드는 인스턴스 방법과 차이가 없습니다.

각 정적 방법의 변수는 자체 범위를 가지며 하나의 메소드에서 다른 방법으로 독립적입니다.

다른 팁

아니오 그들은 같은 스레드에서 순차적으로 실행됩니다

아니요. 정적 방법은 다른 스레드에서 호출하지 않으면 다른 스레드에서 실행될 다른 스레드에서 실행되지 않는 한 다른 방법과 같습니다.

그것은 실제로 당신이 어디에서 호출하는지에 달려 있습니다. 정적 메소드 자체는 스레드를 생성하고 내부에서 실행되지 않습니다.

정적 메소드는 그와 관련된 클래스가없는 메소드입니다. 즉, 정적 메소드를 호출하는 것은 호출되는 객체를 기반으로 해결되는 가상 방법과 달리 간접성을 거치지 않아도됩니다.

모든 방법은 가상이든 정적이든 호출 방법의 스레드에서 실행됩니다. 다른 스레드에서 실행되는 메소드를 원한다면 스레드 풀 또는 다른 기술을 사용하십시오.

하나 더:

각 정적 호출이 서로 독립적이라고 들었습니다.

정적 메소드 호출은 실제로 독립적이지 않습니다.

정적 방법은 동일한 클래스 내에서 다른 정적 필드 및 속성 또는 다른 클래스의 공개적으로 보이는 정적 필드 및 속성에 여전히 액세스 할 수 있으며,이 클래스의 다른 클래스의 속성은 전역적이며 앱의 수명 동안 유지됩니다.

정적 필드의 상태를 변경하는 정적 방법은 제안한대로 "독립적"이 아닙니다. 당신이 그들이 항상 호출 될 것이라고 확신 할 수있는 유일한 것은 하나의 인스턴스 (항상 동일한 개인 데이터 사용).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top