[英]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.