Unity 개인 공부

Unity 개인 공부(2025-01-30)

kimjunki-8 2025. 1. 30. 02:20

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