문자열에 Int를 캐스팅하는 것과 ToString() 메서드를 캐스팅하는 것의 차이점은 무엇입니까? 예를 들어문자열에 int를 캐스팅하는 것과 C#의 ToString() 메서드를 사용하는 것의 차이점
: -
int MyInt = 10;
label1.Text = (string)MyInt; // This Doesn't Work
label1.Text = MyInt.ToString(); // but this does.
문자열에 Int를 캐스팅하는 것과 ToString() 메서드를 캐스팅하는 것의 차이점은 무엇입니까? 예를 들어문자열에 int를 캐스팅하는 것과 C#의 ToString() 메서드를 사용하는 것의 차이점
: -
int MyInt = 10;
label1.Text = (string)MyInt; // This Doesn't Work
label1.Text = MyInt.ToString(); // but this does.
음 사실이다 INT에 대한 문자열 표현을 요구와
는ToString()
는 문자열을 반환 단지 메소드 호출이다.
object
에 정의되어 있으므로 null 참조가 아닌 다른 것을 호출하는 것이 항상 유효합니다.
캐스트 연산자가 할 수있는 네 가지 중 하나를
byte
string
에 object
캐스팅 , 예. 이 경우 int
에 object
캐스팅, 당신은 int
에서 string
로 변환하는 코드를 방출하는 컴파일러를 요구하고 있습니다. 위 옵션 중 어느 것도 적용되지 않으므로 컴파일 타임 오류가 발생합니다.
의 차이는 캐스트와 함께, 당신은 INT는 사실이 아니다 문자열이라고 가정하는 컴파일러를 요구한다는 것입니다. 있으며, toString(), 당신은 문자열 :
음, ToString()은 정수의 문자열 표현을 반환하는 메서드를 호출합니다.
캐스트 할 때 표현을 반환하지 않고 동일한 객체 (이 경우 값 유형)를 참조하지만 다른 유형으로 참조하려고한다고 말하고있는 것입니다.
캐스트 대상 유형 (대상 유형)이 캐스트 대상 오브젝트와 동일한 유형이거나 대상 유형이 캐스트 오브젝트의 수퍼 클래스 또는 인터페이스 인 경우에만 캐스트가 성공합니다.
실제로 소스 또는 대상 형식에서 암시 적 또는 명시 적 변환을 선언하면 캐스트에서 변환을 수행 할 수 있지만 Int32 형식은 String 대상 형식에 대해이 작업을 수행하지 않습니다.
.ToString() 메서드는 System.Object 형식 (모든 .NET 형식이 파생 됨)에서 구현되는 메서드이며 특정 파생 형식에서 재정의 될 수 있습니다.
따라서 "int"유형은 int에 대해 모두 알고있는 자체 ToString() 메소드와이를 문자열 표현으로 변환하는 방법을 가지고 있습니다.
(string) myint 명시 적 형변환을 사용하면 컴파일러에서 강제로 한 유형을 다른 유형으로 변환/캐스팅하도록 요청할 수 있습니다 (이 경우, int를 문자열로 변환). 컴파일러에서 문자열과 int가 호환되지 않는 유형이라고 말하기 때문에 실패합니다.
그래서, 명시 적 캐스트는 컴파일러를 int 이 문자열 아닙니다 그러나로 .toString() 호출이 성공 있다고 때문에 INT 타입이 문자열로 표현 될 수있는 값 있다고 말한다 때문에 실패하고 그렇게 해!
ToString()
메서드는 프로그래밍에서 가장 유용한 메서드 중 하나이며 Java와 같은 다른 많은 언어는 Object
수준에서 구현 된 것과 완전히 똑같은 메서드를 사용합니다.
당신은 자신을 정의 할 수 있습니다 및 C#의 서명은 항상이 있어야합니다 :이 방법은 하나의 개체 클래스에 정의보다 우선합니다 의미 문자열을 반환
public override string ToString()
합니다. 내부에서 원하는 방식으로 문자열을 조작 한 다음 결과를 반환합니다.
또한 정수에서 ToString을 사용할 수있는 구체적인 이유는 C#에서 정수가 Struct Int32
의 모든 인스턴스이기 때문입니다. Int32
으로 보이는 것은 클래스의 동일한 수준에 있으며 자체 메서드를 가질 수 있으며 그 중 하나는 ToString()입니다.
당신은 객체가 null 일 수도 있고 응용 프로그램이 예를 crach 생각하면 한 가지 더가로 .toString()를 사용하지 않을 :
가 //
객체 OBJ = null이 일어날 수있는 문제를 에뮬레이트; obj.ToString();
오늘 담당자가 50,000 명인 것처럼 보입니다! 진보 된 축하해! – Cerebrus
:) 대답에 추가하려면 C#에서 int는 Int32 클래스의 별칭입니다. 그래서 MyInt는 Int32 타입의 객체입니다. Int32는 파생되지 않기 때문에 String에 대한 케이스를 지원하지 않습니다. –
@daanish, Int32는 C# 클래스가 아니며 구조체입니다. – KdgDev