배열 (Array)
배열이란 크기가 고정되어있는 데이터의 집합(컨테이너)이다.
↓ 선언 방식
string[] FruitArray = new string[4];
private void Awake()
{
FruitArray[0] = "Banana";
FruitArray[1] = "Apple";
FruitArray[2] = "Orange";
FruitArray[3] = "Lemon";
}
//또는
string[] FruitArray = new string[4] { "Banana", "Apple", "Orange", "Lemon" };
↓ 사용 예시
string[] FruitArray = new string[4] { "Banana", "Apple", "Orange", "Lemon" };
private void Start()
{
Debug.Log(FruitArray[0]);
}
배열의 0번째 인덱스, 즉 첫번째 값을 출력하면
Banana가 출력된다.
private void Start()
{
for (int i = 0; i < FruitArray.Length; i++)
{
Debug.Log(FruitArray[i]);
}
//또는
foreach (string fruit in FruitArray)
{
Debug.Log(fruit);
}
}
배열의 Length를 사용하여 For문을 돌리거나 Foreach 반복문을 돌려 배열 전체를 순서대로 출력할 수 있다.
Array 사용 함수
Array.ForEach 함수
Array.ForEach(FruitArray, f => Debug.Log(f));
foreach와 기능은 같다.
Array.Exist 함수
bool value = Array.Exists(FruitArray, f => f == "Banana");
배열에 해당 값이 존재하는지 확인하고 true 또는 false를 반환하는 함수이다.
Array.TrueForAll 함수
bool value = Array.TrueForAll(FruitArray, f => f == "Apple");
배열에 모든 값이 해당 값과 같아야 true를 반환하고 아니면 false를 반환하는 함수이다.
Array.Find와 Array.FindIndex 그리고 Array.FindLast와 Array.FindLastIndex 함수
string stringValue = Array.Find(FruitArray, f => f == "Orange");
int indexValue = Array.FindIndex(FruitArray, f => f == "Orange");
string stringValue2 = Array.FindLast(FruitArray, f => f == "Lemon");
int indexValue2 = Array.FindLastIndex(FruitArray, f => f == "Lemon");
Debug.Log($"{stringValue}, {indexValue}, {stringValue2}, {indexValue2}");
Find는 배열에 해당 값이 있는지 앞에서부터 검사하고 만약 있다면 그 값을 반환한다.
FindIndex는 배열에 해당 값이 있는지 앞에서부터 검사하고 만약 있다면 그 값의 인덱스를 반환한다.
FindLast는 배열에 해당 값이 있는지 뒤에서부터 검사하고 만약 있다면 그 값을 반환한다.
FindLastIndex는 배열에 해당 값이 있는지 뒤에서부터 검사하고 만약 있다면 그 값의 인덱스를 반환한다.
Array.Sort 함수와 Array.Reverse 함수
Array.Sort(FruitArray); //오름차순으로 정렬
Array.Sort(FruitArray, (x, y) => x.CompareTo(y)); //내림차순으로 정렬
Array.Reverse(FruitArray); //배열의 순서를 정반대로 바꿈
Array.Resize 함수
Array.Resize(ref FruitArray, 5);
FruitArray[4] = "Mango";
내가 지정한 크기로 배열의 크기를 재설정할 수 있다. 배열의 크기를 네칸에서 다섯칸으로 늘려서 다섯번째 칸에
"Mango"를 넣을 수 있게 되었다.
리스트 (List)
리스트란 크기가 고정되어있지 않고 자유자재로 추가 및 삭제가 가능한 데이터의 집합(컨테이너)이다.
↓ 선언 방식
List<string> FruitList = new List<string>(4);
private void Awake()
{
FruitList[0] = "Banana";
FruitList[1] = "Apple";
FruitList[2] = "Orange";
FruitList[3] = "Lemon";
}
//또는
List<string> FruitList = new List<string> { "Banana", "Apple", "Orange", "Lemon" };
사용 함수들은 값을 추가하거나 제거할 수 있는 Add와 Remove 함수를 제외하면 Array와 동일하다.
딕셔너리 (Dictionary)
딕셔너리란 키(Key)와 값(Value)가 한 쌍으로 이루어진 데이터의 집합(컨테이너)이다.
↓ 선언 방식
Dictionary<string, int> Fruits = new Dictionary<string, int>();
//예 : 과일의 이름과 과일의 개수
Dictionary 사용 함수
Add, Remove 함수
Dictionary<string, int> Fruits = new Dictionary<string, int>();
private void Start()
{
Fruits.Add("Mango", 5);
Fruits.Remove("Mango");
}
Key와 Value를 입력하여 Add로 Dictionary에 추가할 수 있고 Key값을 입력하여 Remove로 Dictionary에서 그 키값의 항목을 제거할 수 있다.
ContainsKey, ContainsValue, TryGetValue 함수
Dictionary<string, int> Fruits = new Dictionary<string, int>()
{
{"Banana", 5 },
{"Mango", 10 }
};
private void Start()
{
bool b1 = Fruits.ContainsKey("Mango");
bool b2 = Fruits.ContainsValue(10);
bool b3 = Fruits.TryGetValue("Banana", out int value);
Debug.Log($"{b1}, {b2}, {b3}");
}
ContainsKey 함수는 Key를 입력하여 해당하는 Key가 Dictionary에 있으면 true, 아니면 false를 반환하는 함수이고
ContainsValue 함수는 Value를 입력하여 해당하는 Value가 Dictionary에 있으면 true, 아니면 false를 반환하는 함수이다.
TryGetValue 함수는 해당 Key가 Dictionary에 있는지 검사하고 만약 존재하고 있다면 해당 Value를 리턴하는 함수이다.
딕셔너리에 "Mango"라는 Key값이 존재하고, 10이라는 Value값도 존재하고, "Banana"라는 Key값이 모두 존재하므로
셋 다 true가 출력된다.
(TryGetValue를 bool로만 받아 출력했으므로 true만 출력된다. 다른 상황에서는 해당 키를 받을 수 있다.)
'C# 기초' 카테고리의 다른 글
[C#] 메모리 구조 (0) | 2024.08.09 |
---|---|
[C#] 리플렉션 - Activator.CreateInstance (0) | 2024.04.21 |
[C#] delegate(델리게이트)와 event(이벤트) (0) | 2023.11.08 |
[C#] async와 await 키워드 그리고 코루틴(Coroutine)과의 차이 (0) | 2023.10.31 |
[C#][개념] 스레드와 동기/비동기 (0) | 2023.10.31 |