2012-06-12 1 views
1

나는 Xna에서 수준 편집기를 개발하고 있는데, 내 질문은 "this"를 param으로 사용하는 메서드를 param의 참조 또는 값이라고 부를 때입니다.은 "this"이며 참조는 param입니까?

예 : 그 문제

class A_Class 
{ 
    private B_Class bClass; 

    public void aMethod() 
    { 
     bClass.bMethod(this); 
    } 
} 

class B_Class 
{ 
    public void bMethod(A_Class aClass) 
    { 
     // code 
    } 
} 
+0

C#은 기본적으로 참조를 전달합니다. –

+0

'this'가 클래스인지 구조체인지에 따라 달라집니다. – SimpleVar

답변

6

클래스는 참조 유형이므로 호출하는 A_Class 객체에 대한 참조입니다.
보다 구체적으로, reference/value에 대한 다른 질문에서 언급했듯이 값을 전달하고 있으며이 값은 호출하는 A_Class 객체에 대한 참조입니다.

A_Class가 아닌 A_Struct 인 경우 this이 값으로 전달되며 Structs는 값 유형입니다.

+0

구조체 내에서 호출하는 경우 값으로 전달하지 않겠습니까? 즉 'this'는 실제로 값 유형입니까? – SimpleVar

+0

참. OP가 그것을 학급으로 지정했지만 양쪽 모두에 대한 정보를 가지고있는 것이 좋습니다. – 3Pi

+0

OP는 질문에 대한 예제를 제공하는 것일뿐입니다. 그는 클래스가 아닌 구조체로 상황에 직면했을 가능성이 있습니다. 나는 완전하고 더 정확한 답변을 편집 할 것이다. – SimpleVar

2

전달 '이'또는 모든 객체는, 기준에 해당하는 값을 전달할 것이다.

+4

** ** ** 참조를 전달하지만 ** 참조로 ** 전달하지 않습니다. – BoltClock

+0

참조의 값을 전달합니다. –

+0

차이점은 C# = P에서는 거의 관련이 없지만 고정되어 있습니다. –

-1

기본적으로 매개 변수는 (값 :)입니다. param이 참조 유형이면 VALUE는 실제 데이터에 대한 참조입니다. param이 값 유형이면 VALUE은 값 유형이 보유하는 데이터입니다. 코드에서 A_Class은 참조 유형이므로 this을 param으로 전달하면 실제로 A_Class 객체의 VALUE가 전달되며 실제 데이터를 참조합니다.

ref 키워드를 사용하면 으로 참조 번호을 전달할 수 있습니다.

자세한 내용은 Parameter passing in C#을 참조하십시오.