2024. 7. 18. 00:20ㆍC#
안녕하세요. 진득 코딩입니다. 이번 시간에는 심화 문법 세 번째 시간으로 정적 메소드와 값을 참조하는 ref와 out에 대해서 살펴보도록 하겠습니다.
정적 메소드
다른 클래스에 있는 변수를 사용하기 위해서는 new를 사용해서 인스턴스화해서 사용합니다. 하지만 static을 사용하게 되면 전역에서 인스턴스화할 필요없이 바로 사용이 가능합니다. 하지만 static을 사용하게 되면 stack 영역에 변수가 항상 들어가있게 되기 때문에 성능적으로 안좋아서 사용을 지양하는 것이 좋습니다.
값의 참조
다음으로는 값을 참조하는 ref와 out에 대해서 살펴보도록 하겠습니다. 위와 같이 ref와 out을 사용하지 않고 void 메소드를 사용하게 되면 x에만 3이 담기게 되고 num은 그대로 1이 출력되는 것을 볼 수 있습니다. 즉 void 메소드의 코드가 num에는 적용되지 않았습니다.
하지만 ref를 사용하게 되면 void 메소드에서 실행한 코드임에도 불구하고 해당 메소드의 기능이 num에 영향을 준 것을 확인할 수 있습니다. 이때 참조하려고 하는 변수의 앞에 ref를 적어주고 메소드의 파라미터 부분과 메소드 호출할 때 보내는 파라미터 부분 모두 적어주어야 작동하게 됩니다.
out을 사용하게 되면 ref와 마찬가지로 void 메소드로 num에 영향을 주는 것을 확인할 수 있습니다. 이는 ref와 out은 파라미터에 단순히 num의 값만 보내는 것이 아니라 num이 할당된 공간의 주소를 함께 보내어 void 메소드에서 실행되는 코드를 num이 할당된 주소로 직접 가서 영향을 줄 수 있기 때문에 void 메소드로 num에 영향을 줄 수 있습니다.
같은 기능을 하는 ref와 out의 차이점은 초기화가 되어 있는 곳의 차이가 있습니다. ref는 함수 밖에서 변수를 참조하므로 메소드를 호출하기 전에 미리 변수를 초기화해야 합니다. 반대로 out은 메소드 안에서 변수의 값을 반드시 바꿔주어야 합니다.쓰임새에 약간의 차이가 있기 때문에 이에 유의하여 적절한 곳에 사용하시면 됩니다.
전에 개발할 때에는 무조건 반환타입이 존재하는 메소드를 사용하여 해당 메소드를 변수에 담아서 사용했었는데 ref와 out을 사용하여 void 메소드로도 함수를 이용할 수 있게 되었습니다. 상황에 따라서 사용하거나 코드를 조금이라도 간결하게 할 때에 사용하면 좋을 것 같습니다. 이번 포스팅은 여기까지입니다. 끝까지 봐주셔서 감사합니다.😀
'C#' 카테고리의 다른 글
[C#] try-catch로 예외 처리하는 법을 알아보자 (0) | 2024.07.23 |
---|---|
[C#] Thread 이벤트로 구현한 코드 분석해보기 (4) | 2024.07.23 |
[C#] 오버 로딩과 오버 라이딩에 대해 알아보자 (0) | 2024.07.17 |
[C#] 좀 더 심화된 C# 문법을 알아보자 (2) | 2024.07.16 |
[C#] C#으로 만든 계산기에 기능 추가해보자 (0) | 2024.07.11 |