2011-08-25 3 views
0

IronPython isinstance(...)의 C#에 해당하는 항목은 무엇입니까?IronPython에 해당하는 isinstance()

+0

C#을 알고 있지만 파이썬을 모르는 사람들에게 instanceOf는 정확히 무엇을합니까? –

+1

'MyInstance is IMyInterface'입니까? –

+0

"일반"개체 또는 유형 개체를 찾고 있습니까? http://www.hanselman.com/blog/DoesATypeImplementAnInterface.aspx – UrbanEsc

답변

2

당신은 할 수 있어야한다. 당신의 목표는 실제로 객체를 캐스팅하는 경우

bool isntance = something is SomeObject; 
+0

감사합니다. –

1

그런 뜻입니까?

object o = "hello"; 
if (o is string) 
{ 
    //do something with a string 
} 

그러면 어떤 개체가 예를 들어 문자열인지 확인합니다. 다른 것을 의미하는 경우 ironPython에 익숙하지 않은 사람들을 위해 더 잘 설명하십시오.

if (x is Type) { 
    ... 
} 

예를 들면 다음과 같습니다 :

object b = new Button(); 


if (b is Button) { 
    throw new Exception("Button encountered."); 
} 
+0

주석 위에 'string s = (string) o;'를 사용하여이 문제를 개선 할 수 있습니다. –

0

당신은 반사를 사용하여 시도 할 수

+0

나는'is' 연산자가 단지 그것을하고 있다고 생각합니다. 그렇지 않습니까? –

2

, 당신은 이런 식으로 그것을 수행해야합니다 :

@Shadow 마법사 지적

bool instance = something.GetType().IsInstanceOfType(SomeObject); 

,이 같은 같은 일을 할 수

Type typeObject = x as Type; 
if(typeObject != null) 
{ 
    ... 
} 

첫 번째 행은 객체 "x"를 캐스팅하려고 시도하고 성공하지 못하면 typeObject는 null 값을 갖습니다. 이 방법은 오브젝트를 한 번만 캐스팅하므로 is 연산자보다 낫습니다. (가) 접근 방식은 개체를 캐스팅하려고 시도하고 성공 true를 돌려줍니다 만, 일반적으로 내부에 당신이 이런 식으로 다시 캐스팅 할 경우 :

if(x is Type) 
{ 
    Type typeObject = (Type)x; 
    ... 
} 

를이 코드에서 두 캐스트는 하나의 연산자입니다 실제로있다, if 내부.

관련 문제