2012-01-17 3 views
8

제목에 단어 ​​질문을 사용하려고 시도하면서 소리 쳤습니다. 그래서 이것은 내가 생각해 냈습니다. 어쨌든 이것은 매개 변수 유형에 대한 순수한 학문적 질문입니다.매개 변수 유형이 내 Func을 망쳤습니다 <shui>

좋아요, 그래서 여기에 있습니다. 나에게 명확하고 모호하지

using System; 
namespace TypeParamTest 
{ 
    internal class Program 
    { 
     private static void Main(string[] args) 
     { 
      PrintType(1, new object()); 
      Console.ReadKey(); 
     } 
     static void PrintType<T, Ttwo>(T first, Ttwo second) 
     { 
      Console.WriteLine(typeof(T) + " : " + typeof(Ttwo)); 
     } 
    } 
} 

은 (눈치 빠른 독자는 페이지 C# in Depth의 249에서 발견 예를 들어 단순한 확장으로이 문제를 인식합니다). 내가 무슨 일이 일어나고 있는지, 컴파일러는 어떤 유형이 있다고 (T에 대해 정의 된 다음 Ttwo에 대해) 말합니다. 왜 내가 이해하지 못하는 이유는 65 페이지의 예제에는 하나의 유형 매개 변수 만있는 것입니다.

List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> conv); 

이 경우 컴파일러는 어떻게 T을 알 수 있습니까?

+2

이 메서드는 T. – ChaosPandion

+2

+1 좋은 질문, 단단한 제목을 정의하는 제네릭 클래스 내에 포함되어 있다고 생각 해요. – MPelletier

답변

9

답변을 드릴만한 정보가 충분하지 않습니다. 어쩌면 T가 주변 클래스에 정의되어 있을까요? 이 List<T>ConvertAll 방법의 일례 인 경우

public class SomeClass<T> { 
    List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> conv); 
} 

후 내 제안 상기 경우이다.

+0

아, 너 모두 너무 나를 때렸어! 그 불꽃은 내 두뇌에서 떨어져 나갔다. – Kenn

관련 문제