모름

주제식으로 이루어지는 멤버

 

영어로 Expression-Bodied Member 라고 불리는 문법에 대해 알아보겠습니다. 메소드를 비롯한 속성(인덱서), 생성자, 종료자는 클래스의 멤버로서 본문이 중괄호로 이루어집니다. 이러한 멤버의 본문은 식만으로 구현이 가능합니다. 이를 앞서 말한 문법명으로 부릅니다.

 

//사용 예

문법 => 식;

 

 

 


 

 

 

예제코드

 

using System;
using System.Collections.Generic;

namespace ExpressionBodiesMember
{
    class FriendList
    {
        List<string> list = new List<string>();

        public void Add(string name) => list.Add(name);
        public void Remove(string name) => list.Remove(name);
        public void PrintAll()
        {
            foreach (var item in list)
            {
                Console.WriteLine(item);
            }
        }

        public FriendList() => Console.WriteLine("FriendList()");
        ~FriendList() => Console.WriteLine("~FriendList()");

        //public int Capacity => list.Capacity; //읽기 전용
        public int Capacity // 속성
        {
            get => list.Capacity;
            set => list.Capacity = value;
        }

        //public string this[int index] => list[index]; //읽기 전용
        public string this[int index] {
            get => list[index];
            set => list[index] = value;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            FriendList obj = new FriendList();
            obj.Add("철수");
            obj.Add("영희");
            obj.Add("길동");
            obj.Remove("철수");
            obj.PrintAll();

            Console.WriteLine($"{obj.Capacity}");
            obj.Capacity = 10;
            Console.WriteLine($"{obj.Capacity}");

            Console.WriteLine($"{obj[0]}");
            obj[0] = "둘리";
            obj.PrintAll();
        }
    }
}

 

따라 작성해보면 쉽게 이해가능한 문법입니다. 단일 식을 메소드에 적절히 사용할 수 있다면 깔끔한 코드가 되는것 같습니다.

 

 

 


 

 

 

참고 List.Capacity

 

내용출처 : https://boycoding.tistory.com/223

 

List.Capacity에 대해 살펴봅니다. C#에서 리스트의 내부 구현은 LinkedList가 아니라 ArrayList로 구현됍니다. 그래서 Capacity 만큼 미리 메모리를 잡습니다. Capacity를 넘어가게 된다면 다시 할당하고 복사하는 과정을 거쳐 비용이 발생합니다. 때문에 List에 삽입할 개수를 미리 안다면 Capacity를 미리 설정하여 메모리를 확보하는 습관을 가지는게 좋습니다.