- 주제
1. 제너릭
2. out, ref 키워드
- 공부내용
1. 제너릭이란?
클래스나 메소드에서 사용할 내부 데이터 타입을 내부에서 미리 지정하지 않고,
외부에서 클래스를 사용할 때, 구체적인 타입을 기재하여 사용하는 것을 말한다.
한 가지 코드를 가지고, 다양한 자료형의 형태로 사용이 가능하다.
정확한 타입을 식별하기 쉬우며, 에러를 찾을 때도 용이하다.
1-1. 선언 방법
C#에서는 <T> 형태의 키워드를 이용하여 제너릭을 선언한다.
예제) T 부분에 데이터 타입을 기입하고, 매개변수 부분에 그 타입에 해당하는 값을 넣어주면
string으로 변환하여 출력하는 함수 생성
//string으로 변환하여 출력하는 함수
void ChangeToString<T>(T value)
{
Console.WriteLine(value.ToString());
}
//위 함수가 잘 작동하는지 확인하고 싶을 때
void ChangeToString<T>(T value)
{
string check = value.ToString();
Console.WriteLine(check);
Console.WriteLine(check.GetType().Name); //데이터타입 확인 GetType().Name
}
1-2. 사용 방법
T부분에 구체적인 자료형을 넣어준다.
ChangeToString<int>(10);
ChangeToString<bool>(false);
ChangeToString<float>(3.14);
[출력]
"10"
"false"
"3.14"
1-3. 자료형이 2가지인 제너릭 클래스 선언 및 사용
//선언
class Pair<T1, T2>
{
public T1 name { get; set; }
public T2 score { get; set; }
public Pair(T1 newName, T2 newScore) //매개변수를 받는 생성자
{
name = newName;
score = newScore;
}
public void Display()
{
Console.WriteLine($"Name: {name}, Score: {score}");
}
}
//사용
Pair<string, int> pair = new Pair<string, int>("PingGo", 100); //매개변수를 받는 생성자 호출
pair.Display();
[출력]
Name: PingGo, Score: 100
2. out, ref 키워드란?
매개변수 앞에 붙이는 키워드는 매개변수에 특정한 기능이나 역할을 부여할 때 사용한다.
out키워드는 메서드에서 매개변수를 이용하여 값을 전달하는 경우에 사용하고,
ref키워드는 메서드에서 매개변수를 수정하여 원래 값에 영향을 주는 경우에 사용한다.
2-1. out 키워드 사용 예시
//생성
void Divide(int a, int b, out int quotient, out int remainder)
{
quotient = a / b; //out키워드를 사용한 매개변수는 함수 내부에서 무조건 값을 세팅해야함
remainder = a % b;
}
//사용
int quotient, remainder;
Divide(7, 3, out quotient, out remainder);
Console.WriteLine($"{quotient}, {remainder}");
[출력]
2, 1 //(7나누기 3의 몫, 7나누기 3의 나머지)
2-2. out 키워드 실전 사용 예시
static void Main(string[] args)
{
string str1 = "8282";
string str2 = "9999";
int num1; // 변수 선언
if (Int32.TryParse(str1, out num1)) // out 키워드
{
Console.WriteLine($"str1 to int1 : {num1}");
}
if (Int32.TryParse(str2, out int num2)) // out 키워드에서 변수선언도 가능
{
Console.WriteLine($"str2 to int2 : {num2}");
}
Console.WriteLine($"int1 + int2 = {num1 + num2}");
}
[출력]
str1 to int1 : 8282
str2 to int2 : 9999
int1 + int2 = 18281
참조사이트
https://blockdmask.tistory.com/606
3-1. ref 키워드 사용 예시
//생성
void Swap(ref int a, ref int b)
{
int temp = a; //a, b 자리교체
a = b;
b = temp;
}
//사용
int x = 1, y = 2; //초기화 하지 않은 변수는 ref로 넘길 수 없으므로, 반드시 초기화
Swap(ref x, ref y);
Console.WriteLine($"{x}, {y}");
[출력]
2, 1
ref 매개변수를 사용하면 메서드 내에서 해당 변수의 값을 직접 변경할 수 있으므로 주의가 필요하다.
3-2. ref 키워드 실전 사용 예시
public static void ChangeNumRef(ref int num)
{
num = 10;
}
int a = 99;
ChangeNumRef(ref a);
Console.WriteLine(a);
[출력]
10
참조사이트
https://blockdmask.tistory.com/605?category=314327
'유니티' 카테고리의 다른 글
Day 15 - C# (인터페이스, Enums 열거형, 예외 처리 try-catch) (2) | 2024.04.30 |
---|---|
Day 14 - 커밋 컨벤션 설정 & README.md 작성 (0) | 2024.04.29 |
Day 12 - 텍스트 게임 만들기(오류 해결 과정3) (0) | 2024.04.27 |
Day 11 - 텍스트 게임 만들기(오류 해결 과정2) (0) | 2024.04.26 |
Day 10 - 텍스트 게임 만들기(오류 해결 과정) (2) | 2024.04.25 |