일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- c언어
- 플러터
- docker
- C++
- C언어 포인터
- C# delegate
- c# winform
- git
- Algorithm
- 깃
- dart 언어
- 구조체
- Houdini
- gitlab
- c# 윈폼
- jupyter
- 유니티
- Data Structure
- c#
- Unity
- c# 추상 클래스
- jupyter lab
- Flutter
- Python
- 포인터
- 도커
- 다트 언어
- github
- vim
- HTML
Archives
- Today
- Total
nomad-programmer
[Programming/C#] 참조자 본문
C#에서 참조에 의한 매개 변수 전달은 아주 쉽다. ref 키워드만 입력해주면 된다. 물론 C++도 쉽지만...
C#의 ref 키워드는 C++의 &(참조자)와 똑같은 개념이다.
매개 변수를 메소드에 참조로 전달
using System;
namespace SwapRef
{
class MainApp
{
static void Swap(ref int a, ref int b)
{
int temp = b;
b = a;
a = temp;
}
static void Main(string[] args)
{
int x = 3;
int y = 4;
Console.WriteLine($"x:{x}, y:{y}");
Swap(ref x, ref y);
Console.WriteLine($"x:{x}, y:{y}");
}
}
}
/* 결과
x:3, y:4
x:4, x:3
*/
메소드의 결과를 참조로 반환
ref 한정자를 이용해 메소드를 선언하고, return문이 반환하는 변수 앞에도 ref 키워드를 명시해야 한다. 그리고 지역 변수와 호출할 메소드의 이름 앞에 ref 키워드를 위치시켜야 한다. 참고로 이렇게 참조로 반환받은 결과를 담는 지역 변수를 "참조 지역 변수(ref local)"라 부른다.
using System;
namespace CSharpExam
{
class Product
{
private int price = 100;
public ref int GetPrice()
{
return ref price;
}
public void PrintPrice()
{
Console.WriteLine($"\nPrice: {price}\n");
}
}
class RefReturnExam
{
static int Main(string[] args)
{
Product carrot = new Product();
// ref_local_price변수는 참조 지역 변수
ref int ref_local_price = ref carrot.GetPrice();
int normal_local_price = carrot.GetPrice();
carrot.PrintPrice();
Console.WriteLine($"Ref Local Price: {ref_local_price}");
Console.WriteLine($"Normal Local Price: {normal_local_price}");
ref_local_price = 200;
carrot.PrintPrice();
Console.WriteLine($"Ref Local Price: {ref_local_price}");
Console.WriteLine($"Normal Local Price: {normal_local_price}");
return 0;
}
}
}
/* 결과
Price: 100
Ref Local Price: 100
Normal Local Price: 100
Price: 200
Ref Local Price: 200
Normal Local Price: 100
*/
'Programming > C#' 카테고리의 다른 글
[Programming/C#] 가변 길이 매개 변수 (0) | 2020.09.07 |
---|---|
[Programming/C#] 출력 전용 매개 변수 (0) | 2020.09.07 |
[Programming/C#] goto 문 (0) | 2020.09.07 |
[Programming/C#] switch 문에서 데이터 형식에 따른 조건 (0) | 2020.09.06 |
[Programming/C#] null 병합 연산자 (0) | 2020.09.06 |
Comments