说我有一个对象,可为空的泛型声明?
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>();