C#을 배우다 보면 string과 String이라는 두 가지 표기를 접하게 됩니다. 이 둘은 과연 다른 타입일까요? 결론부터 말하면 기능적으로 완전히 동일합니다.
string과 String의 관계
String은 .NET의 실제 클래스인 System.String을 가리키는 반면, string은 C#에서 제공하는 별칭(alias)입니다. 즉, 컴파일러가 string을 만나면 자동으로 System.String으로 해석하기 때문에 두 표기는 같은 타입을 의미합니다.
사용 예시
string str = "Welcome!";
위 코드처럼 일반적인 변수 선언에는 주로 소문자 string을 사용합니다.
관례상의 차이점
엄격한 규칙은 아니지만, 개발자들 사이에서는 다음과 같은 관례가 널리 사용됩니다.
- string: 변수 선언 등 일반적인 경우에 사용
- String: 클래스의 정적 메서드를 호출할 때 주로 사용
예를 들어 Format 같은 정적 메서드를 호출할 때는 String 표기를 선호하는 경향이 있습니다.
string str = String.Format("Welcome! {0}!", user);C# 기본 타입의 별칭 목록
string처럼 C#의 모든 기본 데이터 타입은 System 네임스페이스의 타입에 대한 별칭을 가지고 있습니다. 참고로 전체 목록은 다음과 같습니다.
예제
object: System.Object string: System.String bool: System.Boolean float: System.Single double: System.Double decimal: System.Decimal byte: System.Byte sbyte: System.SByte short: System.Int16 ushort: System.UInt16 int: System.Int32 uint: System.UInt32 long: System.Int64 ulong: System.UInt64 char: System.Char
정리
string과 String은 동일한 System.String 타입을 가리키므로 성능이나 동작상의 차이는 전혀 없습니다. 다만 코드의 일관성을 위해 프로젝트 내에서 한 가지 스타일로 통일하는 것이 좋습니다. 마이크로소프트의 공식 C# 코딩 컨벤션에서도 변수 선언 시에는 string, 정적 멤버 접근 시에는 String 사용을 권장하고 있습니다.