메서드를 호출시, 매개변수의 타입(값 or 참조)에 따라서 동작 결과가 달라진다.
따라서 보통 참조에 의한 호출을 하고 싶을 때, ref 키워드를 사용한다.
값에 의한 호출을 하려면 매개변수의 자료형을 그대로 인가하여 사용하면 된다.
그렇다면 class를 매개변수로 인가하여 참조에 의한 호출을 하려면 어떻게 해야하는가?
ref 키워드 추가 할 필요 없이 메서드 정의시 class를 그대로 호출하면 된다.
C#에서 class는 참조 타입이다.
참조 타입은 객체의 참조(주소)를 전달함으로, 메서드나 생성자에서 객체의 속성을 변경하면 원본 객체에 영향을 미친다.
따라서 ref 키워드 추가 할 필요 없이 메서드 정의시 class를 그대로 호출하면 된다.
하지만 class 매개변수의 호출 앞에 ref를 붙힐 수 있는데, 이때 아래와 같은 차이가 발생한다.
특성 | 기본 전달 | ref 키워드 사용 |
객체 속성 변경 | 호출자 객체에 영향을 미침 | 호출자 객체에 영향을 미침 |
객체 참조 변경 | 호출자 객체 참조에 영향 없음 | 호출자 객체 참조에 영향 있음 |
용도 | 내부 데이터 변경 | 객체 자체를 교체하거나 초기화 필요 |
'SW 개발 공부 > C#' 카테고리의 다른 글
[C#] throw new exception (0) | 2025.01.17 |
---|---|
[C#] Array의 크기를 변경하는 방법 Array.Resize<T> (1) | 2025.01.17 |
[C#]PingReply 클래스 (0) | 2025.01.17 |
C# 폴더 없으면 생성하기 (0) | 2023.11.01 |
C# Thread (0) | 2023.10.11 |