2014-02-12 3 views
2

막연한 설명에 대해 사과드립니다. 나는 아래 코드에서 'North'를 사용할 때 무언가가 작동하지 않는 시나리오를 가지고있었습니다. 그러나 코드를 재정렬하고 'X'와 같은 'North'를 정의하면 효과적입니다. 내 인생에서 나는 그것이 무엇인지 기억할 수 없다. (그것은 다른 계급이었고 아래 계급은 아니었다.) 어떤 차이가 있다면, 베어링은 단순히 double (N)을 감싸고 0> = N < 360의 범위로 유지하는 클래스입니다. 어느 쪽이든 그것을하는 이유에 대해 어떤 생각을 가진 사람이 있습니까? 하나가 더 좋습니까? 왜? 감사합니다.정적 변수와 정적 속성 비교

public struct Bearing : IComparable 
{ 
    #region Named Bearings 

    /// <summary> 
    /// A bearing representing North (this is the default) 
    /// </summary> 
    public static Bearing North = new Bearing(0.0); 

    public static Bearing X 
    { 
     get { return new Bearing(0.0); } 
    } 

답변

2

편도는 실제로 "읽기 전용"입니다. 이 방법 :

public static Bearing X 
{ 
    get { return new Bearing(0.0); } 
} 

당신이 그것을 읽을 새로운 Bearing 때마다 돌려줍니다.

다른 인스턴스는 인스턴스가 생성되어 코드의 일부에서 변경할 수있는 경우에만 기본값을 갖습니다. 당신이 그것을 읽을 때 .. 그것은 변화된 가치를 가지고 있습니다.

그럼 어떤 것이 더 좋습니까? 유스 케이스가 무엇이든간에. 둘 다 다른 일을합니다.

+0

감사합니다. 그것은 '상수'를 의미하기 때문에 'X'방식으로 갈 것입니다. –

+0

사실 .. 단지'readonly'와 다른 방식으로 표시하고 런타임 상수를가집니다. –

+0

Simon, 방금 그 옵션을 추가하려고했습니다. 귀하의 의견을 보내 주셔서 감사합니다. 답변을 .. –