2016-11-07 3 views
0

C#의 경우 : 메서드의 반환 형식으로 일반 인수 클래스 유형을 사용하거나 멤버를 정의 할 수 있습니까?C++ 템플릿과 같은 C# 제네릭의 유형 공제?

C++ 예 : 그것은 제네릭 형식에서 사용할 수있는 방법에 대한 가정을 만들기 때문에 같은

class AgrumentClass 
{ 
    typedef int type; 
public: 
    static type GetSomething() { return 0; } 
}; 

template< class T > 
class GenericClass 
{ 
    typedef typename T::type type; 
public: 
    static type GetSomething() { return T::GetSomething(); } 
}; 

int main() 
{ 
    int value = GenericClass<AgrumentClass>::GetSomething(); 

    return value; 
} 
+0

코드 변환 도구가 아니기 때문에 오프 토픽으로이 질문을 닫으려고합니다. – mybirthname

+0

예 C# 제네릭을 배울 수 있으며 거의 ​​모든 곳에서 사용할 수 있습니다. https://msdn.microsoft.com/en-us/library/512aeb7t.aspx –

+5

@mybirthname 그는 코드 변환 도구를 요구하지 않습니다. 그는 C#에서 병렬 처리 기능이 있는지 물어보고 있으며 C++ 예제를 통해 그가 언급 한 개념을 보여줍니다. –

답변

0

귀하의 예는, C 번호에 깨끗한 번역이 없습니다. C#을 사용하면 제네릭 형식을 특정 유형 또는 인터페이스의 하위 항목 또는 구현 자로 제한 할 수 있습니다.하지만 가능한 한 멀리 할 수 ​​있습니다. 메서드를 컴파일 타임에 형식으로 확인할 수없는 경우 컴파일되지 않습니다.

+0

"부정한"방법으로 해결할 수 있습니까? – monotomy

+0

정적 메서드가 있다고 생각하지 않습니다. 올바르게 기억한다면 C#에서는 정적 메서드가 상속받을 수 없습니다. –

+0

정적은 중요하지 않습니다 - C++ 예제를 가능한 짧고 단순하게 만드는 데에만 정적을 사용했습니다 (객체 인스턴스화없이). – monotomy