이것을 사용하여 c
의 인스턴스 인지 확인하십시오 TForm
.
c.GetType().Name.CompareTo("TForm") == 0
string
에 매개 변수로 사용하는 것 외에도 더 안전한 유형의 안전한 방법 이 CompareTo()
있습니까?
답변
여기에 다른 대답은 두 가지 의미가 있습니다.
인스턴스인지 여부는 확인하려면 정확한 입력 한 후
if (c.GetType() == typeof(TForm))
갈 길입니다.
서브 클래스c
의 인스턴스 인지 TForm
서브 클래스 인지 알고 싶다면 is
/ 를 사용하십시오 as
.
if (c is TForm)
또는
TForm form = c as TForm;
if (form != null)
이러한 행동 중 실제로 원하는 행동이 무엇인지 마음에 새기십시오.
답변
if(c is TFrom)
{
// Do Stuff
}
당신이 사용하려는 경우 또는 c
A와 TForm
다음 예를 사용합니다 :
var tForm = c as TForm;
if(tForm != null)
{
// c is of type TForm
}
두 번째 예 c
는 유형이 TForm
한 번 인지 확인하기 만하면됩니다 . 있는지이 경우 Whereis 당신이 선택하면 c
유형 인 TForm
다음 캐스트의 CLR은 별도의 검사를 받는다. 여기 참조 입니다.
편집 : Jon Skeet의 도난
에서 상속하는 클래스 c
가 아닌지 확인 하려면 다음을 사용하십시오.TForm
TForm
if(c.GetType() == typeof(TForm))
{
// Do stuff cause c is of type TForm and nothing else
}
답변
예, “is”키워드 :
if (c is TForm)
{
...
}
MSDN에 대한 자세한 내용을 참조하십시오 : http://msdn.microsoft.com/en-us/library/scekt9xw(VS.80).aspx
객체가 주어진 유형과 호환되는지 확인합니다. 예를 들어 객체가 다음과 같은 문자열 유형과 호환되는지 확인할 수 있습니다.
답변
또한 같은 맥락에서
Type.IsAssignableFrom(Type c)
“c와 현재 유형이 동일한 유형을 나타내거나 현재 유형이 c의 상속 계층 구조에 있거나 현재 유형이 c가 구현하는 인터페이스이거나 c가 일반 유형 매개 변수이고 현재 유형 인 경우 참 “c의 제약 조건 중 하나를 나타냅니다.”
여기에서 : http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx
답변
c를 TForm으로 사용하려는 경우 다른 답변보다 약간 컴팩트합니다.
if(c is TForm form){
form.DoStuff();
}
답변
다음을 시도하십시오
if (c is TForm) {
...
}
답변
다른 사람들이 언급했듯이 “is”키워드. 그러나 나중에 해당 유형으로 캐스트하려는 경우입니다.
TForm t = (TForm)c;
그런 다음 “as”키워드를 사용해야합니다.
예 : TForm t = c as TForm.
그럼 당신은 확인할 수 있습니다
if(t != null)
{
// put TForm specific stuff here
}
중복 검사이므로 그대로 사용하지 마십시오.