0

だから私は素晴らしいJon Skeetのこのビデオを見ていました: http://www.youtube.com/watch?v=3DkISWIouY4 (最初から見て、私が質問しようとしている部分を見てください!)

したがって、次のコードを検討してください。

internal class Program
{
    private static void Main(string[] args)
    {
        var x = new DeepContainer<string>();

    }
}

public class DeepContainer<T> : SimpleContainer<DeepContainer<DeepContainer<T>>>
{
    public DeepContainer()
    {

    }
}

public class SimpleContainer<TSomething>
{
    public TSomething Something { get; set; }

    public SimpleContainer()
    {
    }
}

TSomething を実際の型に展開できない理由として、これが実行されないことはわかっています。<SimpleContainer<SimpleContainer<SimpleContainer<SimpleContainer...

ただし、 の定義を次のように変更するとDeepContainer<T>:

public class DeepContainer<T> : SimpleContainer<DeepContainer<T>> // One level of Deepcontainer omitted

突然それは機能します。

しかし、私の考えではそうではありません。TSomething の型を展開しようとすると、次のようになるためです SimpleContainer<SimpleContainer<SimpleContainer<SimpleContainer<SimpleContainer

これがどのように機能するのか、私には理解できません。

4

0 に答える 0