
null 값을 가질 수 있는 값 형에 대한 특별한 형식으로 값 형 변수에 null 값을 지정할 수 있는 방법을 제공하여 값 형이나 구조체를 사용하는 프로그램에서 null 상태를 나타낼 수 있다.
형식은 ? 연산자를 사용하여 선언된다. 예를 들어, int?는 int 형식에 null을 할당할 수 있는 Nullable<int> 형식을 나타낸다.
null은 '아무것도 없음'을 의미하며, 참조 형 변수가 어떠한 객체를 참조하지 않을 때 사용된다.
일반적으로 값 형식은 null을 사용할 수 없다.
// Nullable 형식 변수 선언
int? nullableInt = null;
double? nullableDouble = 3.14;
bool? nullableBool = true;
// 값 할당 및 접근
nullableInt = 10;
int intValue = nullableInt.Value; // .Value 키워드 사용
// null 값 검사
if (nullableDouble.HasValue) // .HasValue 키워드 사용
{
Console.WriteLine("nullableDouble 값: " + nullableDouble.Value);
}
else
{
Console.WriteLine("nullableDouble은 null입니다.");
}
// null 병합 연산자 사용
// ?? 0과 같이 사용되며, nullableInt가 null이면 0을 반환
int nonNullableInt = nullableInt ?? 0;
Console.WriteLine("nonNullableInt 값: " + nonNullableInt);
문자열 빌더는 다양한 메서드를 제공하며 문자열에 대한 추가, 삽입, 치환, 삭제 작업을 수행할 수 있다.
문자열 조작 시 내부 버퍼를 사용하여 문자열을 조작하므로, 크기를 동적으로 조정할 수 있고, 반복적인 문자열 조작 작업이 발생해도 메모리 할당 및 해제 오버헤드가 크게 감소한다.
문자열 빌더의 용량이 무제한은 아니며 최대 용량이 지정되고 최대 용량을 넘어서게 되면 새 공간이 자동으로 할당되고 용량이 두 배로 증가한다.
Append: 문자열을 뒤에 추가한다.
Insert: 문자열을 지정한 위치에 삽입한다.
Remove: 지정한 위치에서 문자열을 제거한다.
Replace: 문자열의 일부를 다른 문자열로 대체한다.
Clear: 문자열 빌더의 내용을 모두 지운다.
StringBuilder sb = new StringBuilder();
// 문자열 추가
sb.Append("Hello");
sb.Append(" ");
sb.Append("World"); // Hello World
// 문자열 삽입
sb.Insert(5, ","); // Hello, World
// 문자열 치환
sb.Replace("World", "C#"); // Hello, C#
// 문자열 삭제
sb.Remove(5, 2); // HelloC#
// 완성된 문자열 출력
string result = sb.ToString();
Console.WriteLine(result);