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