[C#] - 참조에 의한 호출 : ref, out 키워드
C#2019. 4. 12. 15:28
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
○ 참조에 의한 호출 : ref, out 키워드 |
|||
- 참조에 의한 호출 : ref ref 사용 시 꼭 해야할 것 1. 메소드 매개변수 선언 시 ref를 매개변수 앞에 꼭 표기해야 한다 2. 해당 메소드를 호출할 때 ref를 매개변수 앞에 꼭 표기해야 한다 ref 사용 시 참조 형식, 힙에 존재하는 데이터의 주소값을 가리키고 있으며 주소값이 전달된다 값 형식 stack의 주소값 자체를 전달하고 heap의 같은 주소값을 가리키니 매개변수로 넘어간 것들에 대한 값이 바뀔 수 있다 - 참조는 왜 하는가? 메소드에 객체 전달 시, 객체 내부 값이나 객체 자체를 변경하기 위해서 - ref 와 out의 차이는 무엇인가? ref : 넘기기전 변수를 초기화 해야한다, 메소드 내부에서 변수 값을 수정 시 사용 out : 넘기기전 변수 초기화하지 않아도 된다, 한 메소드에서 여러 개의 값을 반환하기 위해 사용
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | namespace ConsoleApp1 { class Program { static void Main(string[] args) { // out은 넘기기전 변수를 초기화하지 않아도 됨 // out을 이용해 여러 개의 값을 반환하려 할 때 사용 // 메소드 내부에서 생성된 값을 반환하려 할 때 사용 int quotient; if(Divide(15, 3, out quotient) == true) { Console.WriteLine($"out quotient = {quotient}"); } int num; if(int.TryParse("23213213", out num) == true) { Console.WriteLine($"out num = {num}"); } else { Console.WriteLine("숫자 아님"); } } static bool Divide(int n1, int n2, out int result) { if( n2 == 0 ) { result = 0; return false; } result = n1 / n2; return true; } } } | cs |
'C#' 카테고리의 다른 글
[C#] - Dictionary 딕셔너리 (0) | 2019.04.15 |
---|---|
[C#] - Thread의 무명 메소드화, 람다식 표현 (0) | 2019.04.15 |
[C#] - 정적 생성자(static constructor) 와 일반 생성자의 차이 (0) | 2019.04.12 |
[C#] - &&와 || 쓸 때 고민하지 않으면 버그가 생긴다 (0) | 2019.04.12 |
[C#] - 컬랙션 : ArrayList, List<T>, HashTable (0) | 2019.04.11 |
댓글()