C\#:인용 변수 와 수치 변수의 차이
using System;
class Test
{
static void Swap(int x,int y){
int temp=x;
x=y;
y=temp;
}
static void Main(){
int i=1,j=2;
Swap(i,j);
Console.WriteLine("i={0},j={1}",i,j);
}
}
상기 코드 를 컴 파일 하면 프로그램 이 출력 합 니 다.i=1,j=2
2.인용 형 매개 변수 와 값 인삼 이 다른 것 은 인용 형 매개 변 수 는 새로운 메모리 영역 을 열지 않 습 니 다.인용 형 매개 변 수 를 이용 하여 형 삼 을 전달 할 때 컴 파일 러 는 실제 값 이 메모리 에 있 는 주 소 를 방법 에 전달 합 니 다.
방법 에서 인용 형 매개 변 수 는 일반적으로 초기 화 되 었 다.다음 의 예 를 다시 보 자.
using System;
class Test
{
static void Swap(ref int x,ref int y){
int temp=x;
x=y;
y=temp;
}
static void Main(){
int i=1,j=2;
Swap(ref i,ref j);
Console.WriteLine("i={0},j={1}",i,j);
}
}
상기 코드 를 컴 파일 하면 프로그램 이 출력 합 니 다.i=2,j=1
Main 함수 에서 Swap 함 수 를 호출 했 습 니 다.x 는 i 를 대표 하고 y 는 j 를 대표 합 니 다.이렇게 해서 호출 은 i 와 j 의 값 교환 을 성공 적 으로 실현 했다.
방법 에서 인용 형 파 라 메 터 를 사용 하면 여러 변수 이름 이 같은 메모리 주 소 를 가리 킬 수 있 습 니 다.예시 참조:
class A
{
string s;
void F(ref string a,ref string b){
s="One";
a="Two";
b="Three";
}
void G(){
F(ref s,ref s);
}
}
방법 G 가 F 를 호출 하 는 과정 에서 s 의 인용 은 a 와 b 에 동시에 전달 되 었 다.이때 s,a,b 는 같은 메모리 영역 을 동시에 가리 키 고 있 습 니 다.