Microsoft MVP성태의 닷넷 이야기
[답변]: ToString(), (string) 캐스팅, Convert.ToString 의 차이. [링크 복사], [링크+제목 복사]
조회: 3366
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
부모글 보이기/감추기

우선, 1번 질문.

첫번째 방식: Convert.ToString 으로 인한 변환은 사실 Object.ToString() 변환과 기본적으로 같습니다.
단지 해당 개체가 IConvertible 인터페이스를 구현하고 있다면, 먼저 IConvertible.ToString 메서드를 호출해 주도록 합니다.
따라서, 해당 객체가 IConvertible 인터페이스를 구현하고 있지 않다면, Object.ToString() 과 다를 바가 없는 것입니다.
또한, 만약 인자로 넘어온 값이 null 인 경우에는 string.Empty 를 반환하도록 되어 있을 뿐입니다.

두번째 방식: 말 그대로 형변환일 뿐이죠. null 이나 string 형이었으니 다행이었겠지만, 만약 형이 다른 경우였다면 예외가 발생했을 것입니다.

세번째 방식: null 이 아닌 한 정상적으로 문자열을 반환할 것입니다. object.ToString 메서드를 재정의해주면 그 값들이 반환되게 되어 있습니다.


-----
2번 질문.

== 비교연산자는 결국, string.Equals 메서드를 호출하므로 차이는 아무것도 없습니다.
그리고, object 와 string 의 비교시에 박싱,언박싱은 발생하지 않습니다.

우선, 대상 object 에 대해서 string 으로의 형변환이 가능한지 알아보고 (이것은 ToString()을 호출한다는 것이 아닙니다.) 가능한 경우에만 string 으로 형변환을 시킨 후 두개의 문자열 값을 비교하게 됩니다.

--------
참고로, boxing/unboxing 은 참조형식과 값형식간의 변환이므로, 애당초 참조형인 string 이거나 그 외의 class 형인 데이터에 대해서는 boxing/unboxing 은 전혀 발생하지 않습니다.



-------------------------------
마지막으로, 이러한 것들이 궁금하실 때에는
Reflector for .NET - http://www.aisto.com/roeder/dotnet/
위의 유틸리티를 통해서 해당 함수를 직접 살펴보시면 도움이 되실 겁니다.








[최초 등록일: ]
[최종 수정일: 5/5/2006]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

비밀번호

댓글 작성자
 




1  2  3  4  [5] 
NoWriterDateCnt.TitleFile(s)
30정성태5/5/20062085[질문] SocketOptionName.KeepAlive 사용법
31정성태5/5/20063602    답변글 [답변]: SocketOptionName.KeepAlive 사용법
32정성태5/5/20062114        답변글 [추가]: SocketOptionName.KeepAlive 사용법
127정성태9/15/20063033    답변글 [답변]: 외부 자료 - SocketOptionName.KeepAlive 사용법
28정성태5/5/20061560[질문] [assembly: AssemblyCompany("MyCompany")] 에서의 "MyCompany" 를 변경하는 방법
29정성태5/5/20061595    답변글 [답변]: [assembly: AssemblyCompany("MyCompany")] 에서의 "MyCompany" 를 변경하는 방법
26정성태5/5/20064662[질문] 웹 파일 이어받기에 관한 질문
27정성태5/5/20061905    답변글 [답변]: 웹 파일 이어받기에 관한 질문
24정성태5/5/20061735[질문] CodeFile 속성 에러 어떻게 처리해야 하나요?
25정성태5/5/20061746    답변글 [답변]: CodeFile 속성 에러 어떻게 처리해야 하나요?
22정성태5/5/20061802[질문] microsoft.windowsmediaservices.dll 참조가 안 걸립니다.
23정성태5/5/20061746    답변글 [답변]: microsoft.windowsmediaservices.dll 참조가 안 걸립니다.
20정성태5/5/20061543[질문] NDoc 사용하시는 분들 공백 ? 로 나오는 거 어떻게 처리하십니까?
21정성태5/5/20061456    답변글 [답변]: NDoc 사용하시는 분들 공백 ? 로 나오는 거 어떻게 처리하십니까?
18정성태5/5/20061865[질문] 웹서버와 파일서버가 분리되어 있을경우
19정성태5/5/20061741    답변글 [답변]: 웹서버와 파일서버가 분리되어 있을경우
16정성태5/5/20062038[질문] ToString(), (string) 캐스팅, Convert.ToString 의 차이.
17정성태5/5/20063366    답변글 [답변]: ToString(), (string) 캐스팅, Convert.ToString 의 차이.
14정성태5/5/20061799[질문] C# 으로 만든 COM+ 에서 함수 오버로딩 질문입니다.
15정성태5/5/20062019    답변글 [답변]: C# 으로 만든 COM+ 에서 함수 오버로딩 질문입니다.
12정성태5/5/20061408[질문] 새 웹프로젝트 추가시.. 디폴트로 포트 번호 없이 하려면...?
13정성태5/5/20061467    답변글 [답변]: 새 웹프로젝트 추가시.. 디폴트로 포트 번호 없이 하려면...?
10정성태5/5/20062537[질문] axWebBrowser3.Navigate 에서 파라미터를 POST로 보내는 방법
11정성태5/5/20061689    답변글 [답변]: axWebBrowser3.Navigate 에서 파라미터를 POST로 보내는 방법
8정성태5/5/20061663[질문] InitializeComponent 함수내부에 속성값에 대한 코드가 추가되는 문제
9정성태5/5/20061576    답변글 [답변]: InitializeComponent 함수내부에 속성값에 대한 코드가 추가되는 문제
1  2  3  4  [5]