2013-07-02 2 views
-1

예부터 시작하십시오. 다음 샘플 클래스를 보자생성자 매개 변수를 사용할 때 더 좋은 점은 무엇입니까?

class Sample 
{ 
    private object _someObject; 

    public Sample(object someobject) 
    { 
     _someObject = someobject; 

     // If I then wanted to pass someobject to a method within the constructor, 
     // is it better to use the field version or the parameter version. Example: 

     SomeMethod(someobject); 

     // OR 

     SomeMethod(_someObject); 
    } 
} 

는 또한, 난 그냥 빌 와그너에 의해 "효율적인 C 번호"라는 제목의 책을 ​​완료하고 이것과 유사한 형식으로 거기에 더 이상 책이 있는지 알고 싶습니다.

내가 코드를은 (예를 들어,보다 효율적인 IL) 사전들 :

+1

로컬 필드를 사용 하겠지만, 다중 스레드 환경에서 somebody는 inbody로 변경할 수 있습니다. – Corak

+1

질문의 두 번째 부분에 대해서는 http://stackoverflow.com/questions/2181729/which-c-sharp-4-0-book-would-you-purchase-and-why –

+0

@ 코락 : 물론 의견 로컬 필드가 아닌 * 매개 변수 *를 사용하기위한 인수입니까? –

답변

3

그것은 차이가 없습니다에

감사를 작성하는 방법을 작성해야하는 이유 알고에 관심, 그들은 모든 참조가있어 같은 대상으로.

+1

필연적 인 것은 아닙니다. @Corak이 그의 코멘트에서 지적한 것처럼, 하나는 스레드로부터 안전하고 하나는 그렇지 않습니다. –

+1

@DanPuzey : someobject가 변경되면 참조가되므로 _someoject도 변경됩니다. 똑같이 안전하지 않다. 아직도, 나는 보통 일관성을 위해 내부 필드를 사용한다. – ElDog

+0

@ElDog : 다른 스레드가'_someObject = new object()'를 설정하면 필드에만 영향을 미칩니다. 매개 변수는 변경되지 않습니다. 이 필드는 스레드로부터 안전하지 않습니다. 매개 변수는입니다. –