2016-06-08 2 views
-2

내 서적 지식에 따라 System.object가 참조 유형임을 알게되었습니다. 내가 같은 이해를 얻기 위해 일을 다음과 같은 시도 : 나는 main 메소드에서 다음 코드를 작성했다 1 :System.Object는 무엇입니까 ??? 참조 유형 또는 값 유형

Object KC = 12; 
Get data(12); // method where I'm passing variable kj. 
//I'm performing some manipulation in method for kj & value sets as 15. 
Console.WriteLine(kj); // Expected output is 15 . 

고려 KJ는 객체와 참조 타입이다. 하지만 출력은 12 .......

누군가 나에게 위의 상황을 설명 할 수 있습니까?

+0

가능한 이유는 Int32 값 유형입니까? (http://stackoverflow.com/questions/3753542/why-is-int32-a-value-type) –

+0

https://msdn.microsoft.com /en-us/library/yz2be5wk.aspx –

+0

@MeirionHughes 질문과는 아무런 관련이 없습니다. – Rob

답변

1

참조 형식은 참조 번호 (기본값 :, 참조 번호 : C#)로 전달되지 않습니다. 참조 유형의 경우에도 값으로 전달됩니다. 그러나 참조 유형의 값은 단순한 포인터로 시각화 할 수 있습니다.

실제로 전달하는 것은 포인터의 사본입니다. 해당 복사본을 수정하면 이 아닌 원래 참조가 변경됩니다.

이제
void Main() 
{ 
    Object kj = 12; 

    GetData(ref kj); 
    Console.WriteLine(kj); //Prints 15 
} 

void GetData(ref Object o) 
{ 
    o = 15; 
} 

우리가 실제로 그렇게 변화, 참조로 전달하는 o수행에 :

void Main() 
{ 
    Object kj = 12; 

    GetData(kj); 
    Console.WriteLine(kj); //Prints 12 
} 

void GetData(Object o) 
{ 
    //At this point, o is a pointer to the object 'kj' 
    o = 15; 

    //Now o is a pointer to a _new_ object which boxes the value 15. 
} 

하면 이후에있어 기능을 얻으려면, 당신은 명시 적으로 참조하여 통과해야합니다은 원래 참조에 영향을줍니다.

관련 문제