使用类型T的成员创建类的实例,而不指定T类型

Ale*_*lex 1 c# generics

我有一类这种结构:

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)

但显然这些不起作用....

Mon*_*Zhu 5

是否可以在不指定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)