개체 이니셜라이저
2023. 7. 26.

 

1.https://learn.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/object-and-collection-initializers

 

개체 및 컬렉션 이니셜라이저 - C# 프로그래밍 가이드

C#의 개체 이니셜라이저는 생성자를 호출한 다음 생성 시 개체의 액세스 가능한 필드나 속성에 값을 할당합니다.

learn.microsoft.com

Cat cat = new Cat { Age = 10, Name = "Fluffy" };
Cat sameCat = new Cat("Fluffy"){ Age = 10 };

 

2.예제

개체 이니셜라이저

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Starcraft
{
    internal class DataManager
    {//static으로 되어있으면 타입으로 접근한다.
        public static readonly DataManager instance = new DataManager();
        Dictionary<int, ItemData> dicItemDatas = new Dictionary<int, ItemData>();
   
        private DataManager() { //private으로 작성
        
        }

        public void LoadItemDatas()
        {
            dicItemDatas.Add(100, new ItemData(100, "장검", 0, 8));
            dicItemDatas.Add(101, new ItemData(101, "단검", 0, 5));
            dicItemDatas.Add(102, new ItemData(102, "활", 0, 6));
            dicItemDatas.Add(103, new ItemData(103, "도끼", 0, 10));
            dicItemDatas.Add(104, new ItemData(104, "사슬 갑옷", 1, 0));
            dicItemDatas.Add(105, new ItemData(105, "사슬 갑옷", 2, 0));

        }
        public ItemData GetItemData(int id)//아이템 데이터 가져오기
        {
         
            Console.WriteLine("{0}: {1}", dicItemDatas[id].id,dicItemDatas[id].name);
           
            return this.dicItemDatas[id];
           
        }
    }
}
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace Starcraft
{
    internal class App
    {

        //생성자
        public App()
        {
            DataManager.instance.LoadItemDatas();

            //개체 이니셜라이저
            List<Item> items = new List<Item>()
            {
                new Item(DataManager.instance.GetItemData(100)),
                new Item(DataManager.instance.GetItemData(104))
            };
        }


        }
}

 

'C# 기초' 카테고리의 다른 글

대리자2, Action, Func, 람다활용,  (0) 2023.07.27
대리자  (0) 2023.07.27
가짜 인벤토리 만들기  (0) 2023.07.26
namespace, 컬렉션,  (0) 2023.07.26
다차원배열  (0) 2023.07.25
myoskin