반응형
1. 문자열(string)이란?
- C#에서 문자열은 string 키워드로 표현되며, 이는 System.String 클래스의 별칭입니다.
- 문자열은 문자의 배열로, 문자들은 char 타입으로 구성됩니다.
- 문자열은 불변(immutable)입니다. 즉, 한 번 생성된 문자열은 수정할 수 없으며, 문자열을 변경하려고 하면 새로운 문자열이 생성됩니다.
2. 문자열(string) 선언 및 초기화
문자열을 선언하고 초기화하는 방법은 매우 간단합니다. 큰따옴표(" ")를 사용하여 문자열 리터럴을 지정합니다.
string greeting = "Hello, World!";
3. 문자열(string) 연결
- '+' 연산자를 사용
string hello = "Hello"; string world = "World"; string greeting = hello + ", " + world + "!"; Console.WriteLine(greeting); // 출력: Hello, World!
- String.Contact 메서드 사용
string greeting = String.Concat(hello, ", ", world, "!");
- 문자열 보간(String Interpolation)을 사용
string greeting = $"{hello}, {world}!";
4. 문자열 주요 메서드
- 'Length'
int length = greeting.Length; // length는 13
- 'Substring'
string sub = greeting.Substring(0, 5); // 출력: Hello
- 'IndexOf'
int index = greeting.IndexOf("World"); // index는 7
- 'Replace'
string newGreeting = greeting.Replace("World", "C#"); // 출력: Hello, C#!
- 'ToUpper' 및 'ToLower'
string upper = greeting.ToUpper(); // 출력: HELLO, WORLD! string lower = greeting.ToLower(); // 출력: hello, world!
- 'Trim'
string trimmed = greeting.Trim();
5. 문자열 비교
문자열을 비교할 때는 '=='연산자 또는 'String.Equals'메서드를 사용할 수 있습니다. C#에서는 대소문자를 구분하는 비교와 구분하지 않는 비교를 모두 지원합니다.
string str1 = "hello"; string str2 = "Hello"; bool isEqual = str1 == str2; // false, 대소문자 구분 bool isEqualIgnoreCase = str1.Equals(str2, StringComparison.OrdinalIgnoreCase); // true
6. 문자열의 불변성(Immutable)
C#에서 문자열은 불변성(Immutable)을 가지므로, 문자열이 생성되면 그 값을 변경할 수 없습니다. 만약 문자열을 수정하면 새로운 문자열 인스턴스가 생성됩니다. 예를 들어, 아래와 같이
s = "C#"; s = "F#";
문자열 변수 s 가 있을 때, s = "C#"; 이라고 한 후 다시 s = "F#"; 이라고 실행하면, .NET 시스템은 새로운 string 객체를 생성하여 "F#"이라는 데이타로 초기화 한 후 이를 변수명 s 에 할당한다. 즉, 변수 s 는 내부적으로는 전혀 다른 메모리를 갖는 객체를 가리키는 것이다. 이 특성은 메모리 사용에 영향을 줄 수 있으므로, 반복적으로 문자열을 수정하는 작업이 필요한 경우 Mutable 타입인 'StringBuilder'를 사용하는 것이 좋습니다.
StringBuilder sb = new StringBuilder(); sb.Append("Hello"); sb.Append(", "); sb.Append("World!"); string result = sb.ToString(); Console.WriteLine(result); // 출력: Hello, World!
[정리하며]
C#의 문자열은 다양한 기능을 제공하며, 데이터를 처리하고 표현하는 데 매우 중요한 역할을 합니다. 문자열의 불변성(Immutable)과 다양한 메서드를 이해하면, 문자열을 보다 효율적으로 다룰 수 있습니다. 특히 문자열 보간, StringBuilder 사용 등은 성능과 가독성을 동시에 고려해야 할 때 유용한 도구가 됩니다. 하지만 무조건적인 것은 아닙니다. StringBuilder는 성능 면에서 유리하지만, 간단한 문자열 조작에서는 string을 사용하는 것이 코드 가독성과 유지보수 측면에서 더 적합할 수 있습니다. 반대로, 복잡하고 반복적인 문자열 조작이 필요한 경우에는 StringBuilder를 사용하는 것이 성능상 이점이 있습니다. 따라서, 코드의 목적과 상황에 맞게 string과 StringBuilder를 적절히 선택하여 사용하는 것이 가장 좋은 방법입니다.
반응형
'Programming Languages > C# 기초문법' 카테고리의 다른 글
[C# 기초문법] 연산자 (산술, 비교, 논리, 비트, 할당, 조건 연산자) (0) | 2024.09.03 |
---|---|
[C# 기초문법] 열거형 (enum) (0) | 2024.09.02 |
[C# 기초문법] 배열 (Array) (0) | 2024.09.02 |
[C# 기초문법] 변수 및 상수 (0) | 2024.09.02 |
[C# 기초문법] 데이터 타입 (0) | 2024.09.02 |