2011-03-01 5 views
5

이 시나리오가 주어진다면해당 객체가 인터페이스를 구현하는지 확인하는 방법

interface A {} 

class B : A {} 

A b = new B(); 

인터페이스 b에서 오브젝트 b가 생성되었는지 확인할 수 있습니까?

+2

"인터페이스 A에서 생성되었습니다"란 무엇을 의미합니까? 'A'의 변수에 할당 된 사실에 의해'B'의 값을'A'의 구현에 대한 참조로 사용할 수 있다고 말할 수 있습니다 ... 당신의 질문을 명확히하십시오. –

답변

10

is

if(b is A) 
{ 
    // do something 
} 

당신이 원하는 것입니다 사용해보십시오?

+1

예, 물론입니다! 이것은 내가 찾고 있었던 바로 그 것이었다! 감사! – Makach

5

이 같은 테스트 할 수있는 :

var b = new B(); 

var asInterface = x as A; 
if (asInterface == null) 
{ 
    //not of the interface A! 
} 
3

ISAS을. 인스턴스가 IMyInterface를 impelments, 필요한 없음 - 또한 캐스트의 수를 저장합니다입니다,

IMyInterface = instance as IMyInterface; 
if (intance != null) 
{ 
//do stuff 
} 

'는'보다 빠른 '로'

0

우리는 실제 다음을 사용하는 것으로 더 많은 캐스트.

+0

나는 스피드에 대해 그렇게 걱정하지 않는다. 의미 상으로는 사용하는 것이 더 적절하다고 생각한다. – Makach

+0

@Dmitry - 테스트와 증명 링크가 있는가? 왜냐하면 난 그냥 "1000000000 iteration"과 "as"그리고 "is"가 약간 더 빠릅니다. – Stecya

+0

당신은 거기에갑니다 : http://stackoverflow.com/questions/496096/casting-vs-using-the-as-keyword- in-the-clr, Is가 진실한 후에 당신이 할 일은 무엇입니까? 다시 캐스팅합니까? :) –

관련 문제