none
메소드 파라미터를 넘길 때 RRS feed

  • 질문

  • 메소드에 파라미터값으로 넘길때

    값이 복사되어 넘어가나요?

    변수의 주소만 넘겨서 참조만 하는 용도로 사용하고 싶은데

    ref 하여 리스트변수를 넘기면 동적클래스,인덱서는 ref out 을 사용할 수 없다고 하네요

    리스트변수는 그냥 ref 없이 넘겨도 값 복사가 아니라 참조로 넘어가나요?

    아래 코드는 위 의 내용을 간략하게 설명한 것입니다.

    class A{

         class B;

         List<userClass> myclassList = new List<userClass>() ;

         myclassList .add( 10);

         myclassList .add( 11);

         myclassList .add( 12);

         B.use(myclassList )

    }

    class B{

         List<userClass> myClass;

         public void use(List<userClass> userClassList){

                  /// myClass 는 userClassList의 주소만 가지고 있는 것입니까?

                  // 아니면 복사가 되어 있는 것인가요?

                 // 복사라면 ref 를 사용하여야 하나요? 사용하면 동적  인덱서 등은 ref out을 사용할 수 없습니다라고 뜹니다.

                 myClass = userClassList;

         }

    }

    2012년 7월 19일 목요일 오전 7:20

답변

  • 구조체, Primitive type(short, int, char, byte, ...)은 값형이라고 하고, 그것을 제외한 모든 타입(string 포함)은 참조형이 됩니다. 즉, 위에서 정의된 List<userClass> 타입은 참조형이고, 그 인스턴스는 참조값으로 넘어갑니다.

    따라서, B.use 메서드에 넘어가는 인자는 주소가 넘어가는 것일 뿐 데이터 자체가 복사되는 것이 아닙니다.

    • 답변으로 표시됨 잘몰라 2012년 7월 19일 목요일 오전 11:55
    2012년 7월 19일 목요일 오전 7:42

모든 응답

  • 구조체, Primitive type(short, int, char, byte, ...)은 값형이라고 하고, 그것을 제외한 모든 타입(string 포함)은 참조형이 됩니다. 즉, 위에서 정의된 List<userClass> 타입은 참조형이고, 그 인스턴스는 참조값으로 넘어갑니다.

    따라서, B.use 메서드에 넘어가는 인자는 주소가 넘어가는 것일 뿐 데이터 자체가 복사되는 것이 아닙니다.

    • 답변으로 표시됨 잘몰라 2012년 7월 19일 목요일 오전 11:55
    2012년 7월 19일 목요일 오전 7:42
  • 눈물이 찔끔

    이런걸 기본이 안되어있다고 하죠

    아 기본이 안되어있어서 .. 어떻게 밥먹고 살지

    감사합니다.

    2012년 7월 19일 목요일 오전 11:55