說我有一個對象,可爲空的泛型聲明?
Class A<T, T2>
{
public T MyObject {get;set;}
public IList<A<T2>> MyChildren {get;set;}
}
問題是,有時我沒有孩子,所以我不想申報兒童型又名T2,任何想法?我能不能通過像
A a = new A<string, Nullable>(); as it is throwing an error.
感謝
說我有一個對象,可爲空的泛型聲明?
Class A<T, T2>
{
public T MyObject {get;set;}
public IList<A<T2>> MyChildren {get;set;}
}
問題是,有時我沒有孩子,所以我不想申報兒童型又名T2,任何想法?我能不能通過像
A a = new A<string, Nullable>(); as it is throwing an error.
感謝
有沒有辦法來指定一個泛型類型參數「空」 - 如果你聲明它們的類,它們在使用這個類是強制性的。
如果你考慮一下,這是有道理的,因爲如果沒有T2
,你的類將會部分未定義,這不是機器可以很好地處理的東西。
你可能需要做的是將你的班級分成兩部分。首先,你的類沒有孩子:
class Widget<T>
{
public T MyObject { get; set; }
}
然後,增加了對兒童的支持擴展:
class WidgetWithChildren<T,T2>: Widget<T>
{
public IList<Widget<T>> MyChildren { get; set; }
}
雖然,這隻能解決部分問題,因爲你沒有得到的方式來處理孫子。
可空是一個genric它的自我,所以你必須做一些像
new A<string, Nullable<?>>();
您使用可空,使值類型(如int)能爲空,但如果你使用Referense類型(例如類)無論如何它可以是空的。 如果你沒有一個使用Object,我的提示是使用A的基類。
new A<string, Object>();