ref에 대해서 질문이 있습니다.
매개변수나 함수를 호출할때 변수앞에 ref를 붙이는데
이것이 c언어에서 포인터와 유사한 것 같습니다. 궁금한 것은
static void AddOne(ref int num)
{
num+=1;
} 함수 정의하고
int a =0;
AddOne(ref a); 함수 호출하면
C언어에서 주소값을 전달하듯이 a의 참조값을 매개변수 num에 전달한다고 이해를 했습니다.
여기서 헷갈리는 것은 그렇다면 매개변수 ref int num에서 num은 참조값을 다루는 참조형 변수라고 생각해야 할까요?(마치 포인터처럼요)
하지만 그렇다면 바로 다음에 나오는 num+=1;이라는 문장은 값형 변수처럼 쓰이는 것 같은데, 이 부분이 이해가 안됩니다.
답변 2
1
네 맞습니다. C#에서 ref를 붙이면
[동작은 포인터와 유사하지만, 변수 사용 방법은 일반 (비참조형) 타입과 같다]고 보시면 됩니다.
즉 내부적으로는 사실상 주소값을 이용하는 포인터 형태와 동일하게 동작하기 때문에
원본을 건드리지만, C 포인터처럼 복잡하게 *나 -> 같은 문법은 필요없습니다.
참고로 C++에도 C#의 ref와 유사한 [참조 타입]이 존재하는데
int a = 0;
int& b = a;
와 같이 만들어주면 b를 이용해 a를 조작할 수 있으면서도
포인터와 다르게 b = 3; 같은 형태로
일반 int 변수를 사용하는 것처럼 작업할 수 있습니다.
Generic에 대한 질문 있습니다.
0
97
2
2022 버전에 커뮤니티 버전이 없는데 2026 버전으로 해도 무관?
0
203
2
다형성 캐시 문제
0
113
3
.
0
71
1
프로퍼티 강의 질문 있습니다.
0
79
1
이후 커리 질문
0
86
1
static
0
91
2
강의에는 새로운 클래스 파일을 생성하면...
0
72
1
생성자의 이름 선언
0
65
1
9:03 Divide(10 , 3) 부분 질문입니다
0
88
1
깃허브 관련 질문 있습니다.
0
239
1
비쥬얼 스튜디오 업데이트가 된건가요..? 매개변수 오류 관련 질문
0
249
1
C# 시리즈 || C++ 시리즈 자료구조 강의에 대한 질문입니다!
0
306
2
Activator 질문있습니다
0
332
1
이넘 타임 선언 질문
0
347
1
Sort 오름차순, 내림차순
0
323
1
질문 있습니다.
0
249
1
팩토리얼 문제
0
270
1
Sort함수 질문있습니다.
0
265
1
다형성 함수 질문 있습니다.
0
221
1
질문이 있습니다.
0
228
1
섹션2 연습문제 질문입니다.
0
214
1
안녕하세요~서버에 대해 질문이 있습니다.
1
283
1
텍스트 색깔이 제 편집기와 달라서 수강에 어려움이 있습니다ㅜㅜ
0
395
1





