Generics(제네릭)
- 일반적으로
Class
를 정의할 때, 클래스 내의 모든Data Type
을 지정해 주게 된다. 어떤 경우는
Class
의 거의 모든 부분이 동일한데 일부Data Type
만이 다른경우가 있을 수 있다.- ex)
1
2
3
4
5
6
7
8
public class MathPlusInt
{
int hap;
public void set_data(int a)
{
hap = a;
}
}
1
2
3
4
5
6
7
8
public class MathPlusFloat
{
float hap;
public void set_data(float a)
{
hap = a;
}
}
- ex2)
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
31
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Gen<T>
{
public T _member; // 어떤 데이터가 들어올지 모르기 때문에 T라는 변수를 선언해줌
public void set_data( T t1)
{
_member = t1;
}
}
public class Gen : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Gen<string> _gen = new Gen<string>();
_gen.set_data("더조은");
Debug.Log(_gen._member);
}
// Update is called once per frame
void Update()
{
}
}
1
2
3
# 출력 값
더조은
- ex3)
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
31
32
33
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Gen<T>
{
public T _member; // 어떤 데이터가 들어올지 모르기 때문에 T라는 변수를 선언해줌
public void set_data( T t1)
{
_member = t1;
}
}
public class Gen : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Debug.Log(_gen._member);
int a = 1;
int b = 2;
Debug.Log(a + ":" + b);
// a와 b 의 숫자를 교환하세요.
int _Temp = a;
a = b;
b = _Temp;
Debug.Log(a + ":" + b);
}
}
1
2
3
4
5
6
7
# 출력 값
a = 1
b = 2
a = 2
b = 1