2009-04-02 2 views

답변

20

음 사실이다 INT에 대한 문자열 표현을 요구와

ToString()는 문자열을 반환 단지 메소드 호출이다. object에 정의되어 있으므로 null 참조가 아닌 다른 것을 호출하는 것이 항상 유효합니다.

캐스트 연산자가 할 수있는 네 가지 중 하나를

  • 미리 정의 된 변환, 예를 들어, to byte
  • 실행 시간 참조 변환이 실패 할 수 있습니다.
  • 개봉기 변환 컴파일시 실패 할 수에 공지 된 대상 객체 (기본적으로 특별한 이름의 정적 메소드를 호출하는) 적절한 형식을
  • 사용자 정의 변환 것에 대한 확인하는 stringobject 캐스팅 , 예. 이 경우 int

object 캐스팅, 당신은 int에서 string로 변환하는 코드를 방출하는 컴파일러를 요구하고 있습니다. 위 옵션 중 어느 것도 적용되지 않으므로 컴파일 타임 오류가 발생합니다.

+0

오늘 담당자가 50,000 명인 것처럼 보입니다! 진보 된 축하해! – Cerebrus

+0

:) 대답에 추가하려면 C#에서 int는 Int32 클래스의 별칭입니다. 그래서 MyInt는 Int32 타입의 객체입니다. Int32는 파생되지 않기 때문에 String에 대한 케이스를 지원하지 않습니다. –

+0

@daanish, Int32는 C# 클래스가 아니며 구조체입니다. – KdgDev

9

의 차이는 캐스트와 함께, 당신은 INT는 사실이 아니다 문자열이라고 가정하는 컴파일러를 요구한다는 것입니다. 있으며, toString(), 당신은 문자열 :

1

음, ToString()은 정수의 문자열 표현을 반환하는 메서드를 호출합니다.

캐스트 할 때 표현을 반환하지 않고 동일한 객체 (이 경우 값 유형)를 참조하지만 다른 유형으로 참조하려고한다고 말하고있는 것입니다.

캐스트 대상 유형 (대상 유형)이 캐스트 대상 오브젝트와 동일한 유형이거나 대상 유형이 캐스트 오브젝트의 수퍼 클래스 또는 인터페이스 인 경우에만 캐스트가 성공합니다.

실제로 소스 또는 대상 형식에서 암시 적 또는 명시 적 변환을 선언하면 캐스트에서 변환을 수행 할 수 있지만 Int32 형식은 String 대상 형식에 대해이 작업을 수행하지 않습니다.

1

.ToString() 메서드는 System.Object 형식 (모든 .NET 형식이 파생 됨)에서 구현되는 메서드이며 특정 파생 형식에서 재정의 될 수 있습니다.

따라서 "int"유형은 int에 대해 모두 알고있는 자체 ToString() 메소드와이를 문자열 표현으로 변환하는 방법을 가지고 있습니다.

(string) myint 명시 적 형변환을 사용하면 컴파일러에서 강제로 한 유형을 다른 유형으로 변환/캐스팅하도록 요청할 수 있습니다 (이 경우, int를 문자열로 변환). 컴파일러에서 문자열과 int가 호환되지 않는 유형이라고 말하기 때문에 실패합니다.

그래서, 명시 적 캐스트는 컴파일러를 int 이 문자열 아닙니다 그러나로 .toString() 호출이 성공 있다고 때문에 INT 타입이 문자열로 표현 될 수있는 값 있다고 말한다 때문에 실패하고 그렇게 해!

0

ToString() 메서드는 프로그래밍에서 가장 유용한 메서드 중 하나이며 Java와 같은 다른 많은 언어는 Object 수준에서 구현 된 것과 완전히 똑같은 메서드를 사용합니다.

당신은 자신을 정의 할 수 있습니다 및 C#의 서명은 항상이 있어야합니다 :이 방법은 하나의 개체 클래스에 정의보다 우선합니다 의미 문자열을 반환

public override string ToString() 

합니다. 내부에서 원하는 방식으로 문자열을 조작 한 다음 결과를 반환합니다.

또한 정수에서 ToString을 사용할 수있는 구체적인 이유는 C#에서 정수가 Struct Int32의 모든 인스턴스이기 때문입니다.
Int32으로 보이는 것은 클래스의 동일한 수준에 있으며 자체 메서드를 가질 수 있으며 그 중 하나는 ToString()입니다.

0

당신은 객체가 null 일 수도 있고 응용 프로그램이 예를 crach 생각하면 한 가지 더가로 .toString()를 사용하지 않을 :

가 //
객체 OBJ = null이 일어날 수있는 문제를 에뮬레이트; obj.ToString();

관련 문제