我有一类这种结构:
public class ClassName<T>
{
public int Id {get;set;}
public List<T> ObjectList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
一个集合ClassName位于ParentClass
public ParentClass
{
public List<ClassName<T>> Property {Get;set;}
//Other properties...
}
Run Code Online (Sandbox Code Playgroud)
要创建此类的实例,我将执行以下操作:
var item = new ClassName<string>();
Run Code Online (Sandbox Code Playgroud)
是否可以在不指定类型的情况下创建此类的实例T?
我试过了
var item = new ClassName<null>();
var item = new ClassName();
Run Code Online (Sandbox Code Playgroud)
但显然这些不起作用....
是否可以在不指定T类型的情况下创建此类的实例?
简而言之:不.
关于你的意见,为什么你想这样做:
因为并非所有类的实例都需要此变量
我建议细分这些课程.
public class ClassNameBase
{
public int Id {get;set;}
}
public class ClassName<T> : ClassNameBase
{
public List<T> ObjectList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以创建需要具有特定类型的列表的对象.由于继承,它们将具有基类提供的所有其他属性.
编辑:
如果要混合使用和不使用对象的不同情况,ObjectList可以创建基类型的集合:
public ParentClass
{
public List<ClassNameBase> Property {Get;set;}
//Other properties...
}
Run Code Online (Sandbox Code Playgroud)
现在所有不同的兄弟都会很好地融入同一个名单Property.
如果要访问ObjectList其中一个元素,则需要将其转换为:
ClassName<int> temp = Property[0] as ClassName<int>;
if(temp != null)
{
temp.ObjectList.Where(....
}
Run Code Online (Sandbox Code Playgroud)