Unity 올만..
오랜만이니 다시 복습...(참고로 그냥 이전 버전으로 시작하겠습니다. 그렇게)
그러다 신기한 걸 발견!
using System.Collections.Generic; // List를 사용하려면 필요
using UnityEngine;
public class ListExample : MonoBehaviour
{
void Start()
{
// 1. 리스트 선언
List<string> names = new List<string>();
// 2. 리스트에 값 추가
names.Add("Alice");
names.Add("Bob");
names.Add("Charlie");
// 3. 리스트 값 출력
foreach (string name in names)
{
Debug.Log(name);
}
// 4. 특정 값 제거
names.Remove("Bob");
// 5. 리스트 값 확인
Debug.Log("After removing Bob:");
foreach (string name in names)
{
Debug.Log(name);
}
// 6. 리스트 초기화
names.Clear();
Debug.Log("List count after clearing: " + names.Count);
}
}
이것은 전형적인 리스트를 만드는 방법입니다.
그런데 미리 값을 넣어놓고 쓸 수도 있습니다.
using System.Collections.Generic; // List를 사용하려면 필요 using UnityEngine; public class ListInitialization : MonoBehaviour { void Start() { // 문자열 리스트 초기화 List<string> names = new List<string> { "Alice", "Bob", "Charlie" }; // 값 출력 foreach (string name in names) { Debug.Log(name); } // 숫자 리스트 초기화 List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; // 값 출력 foreach (int number in numbers) { Debug.Log(number); } }
이렇게 말입니다.
그런데
List<string> names = new List<string>();
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
위 코드는 ()이 있는데 {}은 없고 밑은 {}은 있는데 ()은 없습니다.
List<string> names = new List<string>();
이 방식은 빈 리스트를 생성합니다. 생성 이후에 값을 추가해야 합니다.
List<string> names = new List<string>(); // 빈 리스트 생성 names.Add("Alice"); names.Add("Bob"); names.Add("Charlie");
리스트를 먼저 생성한 후, 필요한 값을 추가(Add)하는 방식입니다.
()은 기본 생성자(Constructor)를 호출하는 것입니다. 여기서 List 객체가 생성됩니다.
유연하게 값을 추가하거나 동적으로 리스트를 조작할 때 유용합니다.
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
이 방식은 리스트를 생성하면서 초기 값까지 지정하는 방식입니다.
중괄호 {}를 사용해 리스트의 초기 값을 바로 설정합니다.
리스트를 만들면서 값을 한 번에 넣고자 할 때 편리합니다.
Add를 반복적으로 호출할 필요가 없어서 코드가 더 간결합니다.
아무튼, 그 이유는 초기화 구문(컬렉션 초기화)을 사용할 때 ()가 필요 없기 때문입니다. C#에서는 컬렉션 초기화 구문을 사용하여 리스트를 초기화할 때, 객체를 생성할 때와는 달리 값을 추가하는 구문으로 중괄호 {}만 사용합니다. 즉, 리스트 객체 생성과 동시에 값을 추가하는 방식입니다.
차이점:
new List<string>():
()는 생성자를 호출하는 부분입니다. List<string> 객체를 생성하는 데 필요합니다.
하지만 리스트를 생성하면서 값을 넣을 때는 생성자 호출 뒤에 ()가 필요하지 않습니다.
new List<string> { "Alice", "Bob", "Charlie" }:
중괄호 {}는 컬렉션 초기화 구문입니다. List<string> 객체가 생성된 뒤 즉시 값들을 추가하는 구문입니다.
이 방식은 C#의 컬렉션 초기화 기능을 활용한 것으로, Add() 메서드를 호출하지 않고도 리스트에 값을 초기화할 수 있습니다.
new List<string>()를 사용할 때:
리스트의 초기 값이 없거나, 이후 값이 동적으로 추가되는 경우.
예: 게임 오브젝트의 이름을 나중에 추가로 불러와야 하는 경우.
List<string> names = new List<string>(); names.Add("Player1"); names.Add("Player2");
new List<string> { ... }를 사용할 때:
초기 값을 바로 알고 있고, 간결한 코드가 필요한 경우.
예: 고정된 아이템 이름이나 설정 값을 초기화할 때.
List<string> itemNames = new List<string> { "Sword", "Shield", "Potion" };
(): 빈 리스트를 생성.
{}: 초기 값을 포함한 리스트를 생성.
요약:
()는 생성자를 호출하는 구문입니다.
{}는 컬렉션 초기화 구문으로, 생성된 리스트에 즉시 값을 넣을 때 사용됩니다.
이 차이 때문에 List<string> names = new List<string> { ... };에서 ()가 필요 없고, 대신 {}를 사용합니다.
일단 글은 여기까지 하겠습니다...웰케 짧냐구요? 사실 피드백을 받았습니다 Unity를 하기전 CS를 먼저 배우라는 피드백을요. 그래서 다음에는 CS에 대해 다시 한번 돌아오겠습니다.
'Unity 개인 공부' 카테고리의 다른 글
Unity 개인 공부(2025-01-24) (0) | 2025.01.24 |
---|---|
Unity 개인 공부(2025-01-23) (0) | 2025.01.23 |
Unity 개인 공부(2025-01-22) (2) | 2025.01.22 |
Unity 개인 공부(2025-01-21) (0) | 2025.01.21 |
Unity 개인 공부(2025-01-20) (0) | 2025.01.20 |