안녕하세요 삽잡이입니다.
이번 시간에는 가볍게 문자열에 대해서 알아보려고합니다.
물론, 그 외에 기초적인 부분들도 상황에 맞게 알아보겠습니다.
시작하겠습니다.. 푸하하
C#에서는 Namespace 다음 .(점)으로 구분하고,
타입을 쓰고 또 .(점)으로 구분하고 접근하여 사용합니다.
예를 들어 간단한 정적 출력 메소드를 확인해보도록 하겠습니다.
WriteLine 메소드는 문자열을 출력하는 메소드입니다.
이와 반대로 ReadLine 메소드가 있지요...
기존 C/C++ 에서 알아온 함수들과 별 차이가 없습니다.
Console이라는 타입에서는 모두 '문자열'을 사용합니다.
사실 C/C++도 마찬가지였습니다.
원래, 입력을 받으면 문자열로 우선 받고 %d, %f등에 의해서 변환을 한 것이었습니다.
참고로 C#에서는 Java도 마찬가지지만 문자열을 변경할 수 없습니다.
즉, 원본 문자열이 변경되지 않는 것입니다.
MFC, STL의 string은 원본 문자열을 대괄호 연산자를 통해 변경할 수 있었습니다...
뭐.. 문자열을 결합하는 것은 상관 없습니다.
아무튼... C#도 마찬가지로
문자열을 모든 타입으로 변경할 수 있어야 각 타입에 맞는 작업을 처리할 수 있겠지요...
Console 타입은 변환 format을 제공하는 것이 아닌
너무도 많이 변환을 사용하기 때문에
문자열을 모든 타입으로 변경할 수 있다고 생각하시면 됩니다...
모든 형식(내장 형식)들은 문자열로 변환하는 기능을 자동으로 제공해줍니다.
하지만, 문자열에서 내장 형식으로 변환하는 것은 일부만 제공을 합니다.
따라서, 우리가 Parse()라는 함수를 통해 문자열에서 내장형식으로 변환을 해야합니다.
모든 내장형식들은 Object라는 부모로부터 파생 됬습니다.
그런데 이 Object 는 ToString() 이라는 문자열 변환 메서드를 가지고 있습니다.
따라서 모든 내장 형식들은 문자열로 변환할 수 있는 것입니다.
아무튼...
예를 들어서 문자열을 정수로 변환하려면 이와 같이 해주면 됩니다.
해당 예제는 문자열을 정수로 변환해주는 매커니즘입니다...
그다지 어렵지 않지요... 허허...
그런데 만약 문자열을 정수로 변환하는데
정수가 아닌 다른 값을 매개변수로 줄 경우를 대비해서
예외처리를 해주는 것이 바람직합니다.
일반적으로 Parse() 메서드와 같은 예외 위험성이 있는 메서드들은
try - catch 문을 통해 예외처리를 해줍니다.
자... 정리해봅시다...
문자열과 기본형식(내장 형식)은 변환할 수 있습니다.
모든 내장 형식의 부모가 Object인데
여기에는 문자열을 변환할 수 있는 ToString() 메서드가 있습니다.
따라서 내장 형식을 문자열로 변환하기 위해서는 ToString()을 호출해주면 되는 것입니다.
하지만, 반대로 문자열을 내장 형식으로 변환하려면
Type의 Parse() 혹은, TryParse() 메서드를 호출해주면 됩니다.
이들은 모두 정적 메서드들이지요...
중요하니 기억하시길 바랍니다!
그런데 WriteLine() 메서드는 감사헥도 어떤 형식이든 모두 출력해줍니다.
이게 가능한 이유는 위에서 언급한
ToString() 메서드를 내부적으로 호출해주기 때문입니다.
ToString() 메서드는 내장 형식을 문자열로 변환을 해주니까 가능한것이지요...
닷넷에서는 string으로 변환하는 방식에 대해서 두가지 방법을 제공해줍니다.
첫번째는 위에서 언급한 ToString() 방식이고
두번째는 바로 문자열("")에 '+' 연산자를 통해 내장 타입의 값을 더해주면 됩니다.
내장 타입형식을 문자열로 바꿔 문자열과 합치는 것이지요...
이번 시간은 여기까지 하도록 하겠습니다.
이상 삽잡이였습니다!
'삽질의 현장 > - .NET' 카테고리의 다른 글
#007_닷넷(.NET)_.Net Framework 기본 -static & Main & 설비 영역 & APP 영역 (0) | 2015.10.22 |
---|---|
#006_닷넷(.NET)_.Net Framework 기본 - namespace & 타입 & 가시성 (0) | 2015.10.22 |
#004_닷넷(.NET)_.Net Framework 기본 - 인터페이스 (0) | 2015.10.22 |
#003_닷넷(.NET)_.Net Framework 기본 - 어셈블리 (0) | 2015.10.21 |
#002_닷넷(.NET)_.Net Framework - 기본 & BCL & CTS & CLS (0) | 2015.10.21 |