나 개발자 진짜 되냐?

[ C# 기본 문법 23 ] Nullable 과 StringBuilder 본문

C# 을 맛보았어요!/문법정리를 해보았어요!

[ C# 기본 문법 23 ] Nullable 과 StringBuilder

Snow Rabbit 2024. 9. 24. 00:11

 

Nullable

 

문자열 빌더 (StringBuilder)

 

에 대해 알아보자!

 


🌟 Null 🌟

 

null은 "아무것도 없음"을 의미

어떠한 객체를 참조하지 않을 때 사용

 

 

🌟 Nullable 🌟

 

C#에서 null 값을 가질 수 있는 값형에 대한 특별한 형식

원래 값형에서는 null 값을 가질 수 없 다.

 

그래서 우리는 반환도 하고 초기화도 해준다.

 

즉,

값형 변수에 null 값을 지정할 수 있는 방법을 제공

 

값형이나 구조체를 사용하는 프로그램에서

null 상태를 나타낼 수 있습니다.

 

간단하게

값형 변수가 null 인지 아닌지를 확인하고 처리해야 할 때 유용하다.

 

흠.. 이렇게 들어보니 전 시간에

값? 선언

 

이런 친구가 있긴 했었다.

널리면 패스

널이 아니면 선언

 

// Nullable 형식 변수 선언
int? nullableInt = null;
double? nullableDouble = 3.14;
bool? nullableBool = true;
//null로 써도 되고, 평소대로 값 입력해주어도 된다.

// 값 할당 및 접근, 둘다 가능
nullableInt = 10;
int intValue = nullableInt.Value;

// null 값 검사 HasValue라는 친구를 사용한다.
if (nullableDouble.HasValue) // 값이 세팅되어있다면 if문, 아니면 else문
{
    Console.WriteLine("nullableDouble 값: " + nullableDouble.Value);
}
else
{
    Console.WriteLine("nullableDouble은 null입니다.");
}

// null 병합 연산자 사용
// nullableInt ?? 0과 같이 사용되며, nullableInt가 null이면 0을 반환합니다.
int nonNullableInt = nullableInt ?? 0;
Console.WriteLine("nonNullableInt 값: " + nonNullableInt);

 

간단하게 정리하면

 

변수를 만들 때 자료형 뒤에? 를 붙이면

Nullable 형식이 되며,

 

Nullable 형식의 값을 사용하는 것 이외에도

null 인지 아닌지도 알 수 있다.

 

 

🌟 StringBuilder 🌟

 

 

Append(), Insert(), Replace(), Remove()

다양한 메서드를 제공하여 문자열에 대한

추가, 삽입, 치환, 삭제 작업을 수행할 수 있습니다.

 

간단하게 정의하면

문자열들을 내부적인 주머니 안에 넣어놓고 받아서

조합해 놨다가 필요할 때 문자열로 만든다.

 

문자열을 조작할 수 있는 기능들이다.

 

 

넣다 뺏다가 가능하기 때문에

가변적으로 길이와 메모리를 조절 가능하다.

 

종류로는

 

 Append: 문자열을 뒤에 추가
Insert: 문자열을 지정한 위치에 삽입
Remove: 지정한 위치에서 문자열을 제거
Replace: 문자열의 일부를 다른 문자열로 대체
Clear: StringBuilder의 내용을 모두 삭제

 

StringBuilder sb = new StringBuilder();

// 문자열 추가
sb.Append("Hello");
sb.Append(" ");
sb.Append("World");

// 문자열 삽입 5번 인덱스에 ,를 넣겠다. 0부터세면 총 6번째다.
sb.Insert(5, ", ");

// 문자열 치환
sb.Replace("World", "C#");

// 문자열 삭제 5번 인덱스에서부터 두글자 지우자!
sb.Remove(5, 2);

// 완성된 문자열 출력
string result = sb.ToString(); //문자열로 형변환
Console.WriteLine(result);

스트링 빌더라는 클래스를 적는다.

클래스는 기능을 제공받는 틀이기 때문!

 

클래스이기 때문에

바로 쓰면 안 되기 때문에

new 사용!!

 


지금까지

고급자료형과 기능에 대해서 공부해보았다.

 

 

다음 글은

알고리즘에 대해 써볼 생각이다.

 

알고리즘이 사실 제일 중요하다고 생각한다.

코테도 그렇고

알고리즘을 알아야

코딩이 가능하다고 생각하기 때문.

 

수학책처럼

기초부터 하자는 마인드로 차근차근

공부해나가야겠다.

 

화이팅..!!