初始化IList C#

有没有特定的方法来初始化IList ? 这似乎不起作用:

 IList allFaqs = new IList(); // Error I get here: Cannot create an instance of the interface 'IList' 

ReSharper建议像这样初始化它:

 IList allFaqs = null; 

但是当我去添加项目列表时,这不会导致空引用exception吗?

或者我应该只使用List

谢谢!

该错误是因为您正在尝试创建接口的实例。

将您的代码更改为:

 List allFaqs = new List(); 

要么

 IList allFaqs = new List(); 

它应该编译。

您显然必须更改其余代码以适应。

你的问题是IList是一个接口,而不是一个类。 您无法初始化界面。

您可以拥有一个接口实例,但需要使用实现该接口的类对其进行初始化,例如:

 IList strings = new List(); 

前面的代码行将起作用,但您只能使用IList的成员而不是初始化的任何类的完整集。

伊利诺伊州不是一个阶级; 它是类可以实现的接口。 接口本身只是类的使用者和类本身之间的契约。 这行代码将起作用:

 IList allFaqs = new List(); 

这有帮助吗?

你需要这样做:

 IList allFaqs = new List(); 

在您的代码中,您尝试初始化接口。

IList是一个接口,因此您无法实例化它。 各种类都实现了IList。 实现IList的一个这样的类是List。 您可以像这样实例化它:

 List allFaqs = new List(); 

您无法实例化接口(IList是一个接口)。

您需要实例化实现IList的东西,

像这样:

 IList allFaqs = new List(); 

还有其他类型的IList,但List是一个很好的开始。

IList是一个接口,而不是一个类。 如果要初始化它,则需要将其初始化为实现IList的类,具体取决于内部的特定需求。 通常,IList使用List进行初始化。

 IList items = new List(); 

IList是一个接口。 您需要实例化一个实现该接口的类:

 IList allFaqs = new List(); 

List实现IList ,因此可以分配给变量。 还有其他类型也实现IList