2011-09-18 4 views
1

양방향 구성이 값 유형을 전달하는 것이 좋지 않은 이유는 무엇입니까?

난 단지 2 클래스 :

class A 
{ 
    public B b = new B();  
    public bool flag {get; set;} 
} 

class B 
{ 
    public void foo() 
    { 
    //iterates a dataTable with column "someBoolCondition" 
    // I want to set A's bool to true, after the first record that has 'true' in column 
    //"someBoolCondition". Thus is thought to avoid bool memebers in each class. 
    } 
} 

내 생각은 부울 값 유형의 너무 좋지 않았다 : "ReferenceToA.flag = true;"줄을 때문에 문제가 생각합니다. 나는 실행되지만 나중에 보지 못한다. A의 깃발이 사실로 바뀐다. 왜 그런가요?

 class A 
    { 
     public bool flag {get; set;} 

     public B b = new B(); 
     b.ReferenceToA = this; 
    } 

    class B 
    {  
     public A ReferenceToA {get; set} 
     public void foo() 
     { 
      ReferenceToA.flag = true; //... 
     } 
    } 

참조 유형 구성원처럼 우아한 방법이 있습니까? 과잉인가요? 다르게 수행되어야합니까?

+0

왜 bool 대 참조 유형에 문제가 있는지 이해할 수 없습니다. 참조는 32 비트 또는 64 비트이며 bool은 동일한 메모리를 차지하므로 아무런 차이가 없습니다. –

+0

"ReferenceToA.flag = true;"라는 줄이 있습니다. 나는 실행되지만 나중에 보지 못한다. A의 깃발이 사실로 바뀐다. 왜 그런가요? –

답변

0

bool을 참조 유형과 비교할 때 패턴이 실제로 나 빠지지 않습니다. 정확히 동일합니다.

사실 (참조로 전달되는) 참조의 크기는 32 또는 64 비트입니다. 크기도 bool입니다.

+0

"ReferenceToA.flag = true;"라는 줄이 있습니다. 나는 실행되지만 나중에 보지 못한다. A의 깃발이 사실로 바뀐다. 왜 그런가요? –

+0

그럴 수 없다 ... 전체 코드를 게시 할 수 있습니까? –

+0

가지 마세요,하지만 지금은 작동합니다. –

0

이것은 과도하지 않습니다. 여기에서하는 일을 성취 할 수있는 다른 방법이있을 수 있지만 프로젝트 요구 사항에 따라 하나 또는 다른 것을 선택했습니다. 나를 위해 그것은 절대적으로 괜찮습니다.

단순화하기 위해 boolean 속성을 static으로 생각할 수 있으므로 B 클래스에서 직접 A.flag에 액세스 할 수 있습니다. 그러나이 말은 당신의 게시물을 읽는 것만으로도이 솔루션이 정말 적합한 솔루션이라면 나에게 말하기는 어렵습니다.

관련 문제