簡體   English   中英

你能在C#中實例化一個泛型類型參數的嵌套類型嗎?

[英]Can you instantiate a nested type of a generic type argument in C#?

以下代碼導致編譯器錯誤,我認為不應該是必需的。 有一個很好的解決方法嗎?

錯誤CS0704:無法通過類型參數“T”指定嵌套類型

public class Base<T>
{
    public T genericData;
    public Nested data;
    public class Nested
    {
    }

    public static B Create<B>() where B : Base<T>, new() {
        var result = new B();
        result.data = default(B.Nested);
        return result;
    }
}

好吧, Nested的完整名稱實際上是Base<T>.Nested ,沒有別的。 Nested -class因此屬於Base<T> -class而不屬於其子類。 因此,請寫下以下內容:

result.data = default(Base<T>.Nested);

然而, Base<T> -qualifier是多余的,因為代碼已經該類中。 所以你也可以使用這個:

result.data = default(Nested);

除此之外,您還可以使用result.Data = null ,因為Base<T>是一個引用類型,默認為null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM