오늘 배운 내용
- 확장 메서드
- 불변객체
- StringBuilder
- Null
- Const
- Readonly
- Tuple
- Optional Parameter
확장 메서드
- 기존에 있는 클래스를 건드리지 않고, 기능을 추가할 수 있도록 하는 기능이다.
- 명확하게 필요로 하는 기능들을 미리 구현해놓고 확장 메서드를 불러와서 사용할 수 있다.(작업 속도 향상)
public static class Extensions
{
}
불변 객체(Immutable)
- string은 가장 대표적인 불변 객체중 하나로, 원본의 데이터가 변하지 않는다.(델리게이트도 불변 객체이다.)
- 새로운 객체를 만들어서 새로운 공간에 재할당 하는 방식이기때문에 Heap메모리에 주소가 할당된다해도 아예 새로운 객체가 생기는것이라 객체 자체는 변하지 않는다.
StringBuilder
- 특정 글자수가 넘어간다면 크기를 늘려서 불변 객체를 재할당하지않도록 하는것이다.
- 메모리의 할당 수가 줄어든다.
Null
- Null은 실제로 데이터상에서 값이 비어있다는것을 뜻한다.
- "0"이라는 숫자는 없다라고 표현하지만, 데이터 상으로는 0이라는 데이터를 가지는것이고, "Null"은 값이 없다는 뜻이다.
Const
- const는 상수(변하지 않는 수)이다.
- const는 static(정적)의 맴버로 자동 처리된다.
- const는 컴파일 타임에 값이 정해진다.
- 기본 자료형이나 string에서는 가능하다.
- 찐 상수가 필요할때는 Const 사용
Readonly
- 프로그램을 시작할 때 런타임에 "딱 한번"만 설정(사용)가능하다.
Tuple
- 데이터 타입 여러개를 묶어서 사용할 수 있다.
- 클래스 안에서 "딱 한번"만 쓸 때
- 하지만 남용하면 가독성이 떨어진다.
public (int x, int y, int z) a = (5, 4, 5);
public (int, string) values = (5, "Hello")
Optional Parameter
- 매개변수로 갖고있어야하는데, 입력을 하지 않는다면 기본값으로 설정되게 할때
- 알아두면 좋지만 남용하지 않는것이 좋다.(의도를 파악 못할 수 도있음)
public class Tester
{
public void Run()
{
Monster monster = new();
Console.WriteLine(monster.Health);
}
}
public class Monster
{
public int Health { get; private set; }
public Monster(int health = 50)
{
Health = health;
}