2013-05-09 4 views
23

은 제가 숫자를 클래스가 인스턴스화 될 때마다 증가해야하는이 클래스가 있습니다. 아직타이프 : 글로벌 정적 변수 가장 좋은 방법

  1. 모듈 범위에서 변수를 선언하는 가장 좋은 방법

    module M { 
        var count : number = 0; 
        export class C { 
        constructor() { 
         count++; 
        } 
        } 
    } 
    
  2. 변수를 선언에게 무엇에 나는 두 가지 작동 곳으로 두 가지 방법을 발견했다, 그러나 나는 확실하지 않다 및 클래스 범위에서

    module M { 
        export class C { 
        static count : number = 0; 
        constructor() { 
         C.count++; 
        } 
        } 
    } 
    

필자는 전자는 클래스에 액세스 모듈 범위에 카운트 변수를 추가하지 않으므로 두 샘플.

은 참조 : C# incrementing static variables upon instantiation

답변

21

확실히 그 이후 방법이 변수를 사용하는 클래스입니다. 그래서 그것을 포함해야합니다.

경우 1 년에 두 개 이상의 클래스 거기에 당신이 한 번 혼란이 될 것이다 변수를 사용하는 예 : 그 덜 의미

module M { 

    var count : number = 0; 

    export class C { 
    constructor() { 
     count++; 
    } 
    } 

    export class A{ 
    } 
} 
+1

합니다. 더 중요한 것은 변수 이름입니다. 코드의 대부분의 장소에서 이름이 '카운트'가 무엇을 나타내는 지에 대한 충분한 정보가 아닙니다. 나는 'numConstructed'또는 'constructedCount'을 선호하는 것입니다. –

+0

는 특정해야한다, 동의! 여기에 사용 된 코드는 예제 일뿐입니다. –

1
둘 다 괜찮

하지만 method 2 더 자명, 당신은 당신이 그 모듈에서 클래스를 인스턴스화 할 때마다 증가하는 count를 사용하지 않는 코드가 더 복잡 얻을 때 혼란 다음 method 1 갈 방법입니다.

는 나는이 방법을 선호 : 클래스 C는 I 패키지 수준에서 그것을보고 방해되지 않을 수를 사용하여 하나없는

module M { 
    export class C { 
    static count : number = 0; 
    constructor() { 
     C.count++; 
    } 
    } 
}