2012-01-17 10 views
8

タイトルに単語questionを使用しようとして叫んだので、これは私が思いついたものです。とにかく、これはパラメータ型についての純粋に学問的な質問です。パラメータタイプが私のFuncを台無しにしました<shui>

OK、これは私が得たものです。私には明確であいまいでない

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ページの例に1つの型パラメータしかない理由です。

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

この場合、コンパイラはTについてどのように知っていますか?

+2

私はこのメソッドがT. – ChaosPandion

+2

+1を定義するジェネリッククラスに含まれていると考えています。 – MPelletier

答えて

9

私たちには十分な情報がありません。たぶんTは周囲のクラスに定義されていますか?

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

このList<T>ConvertAll方法の例であれば、上記の私の提案はケースです。

+0

ああ、あなたもすべて私を打つ!その火花は私の脳の中でただ消えた。 – Kenn

関連する問題