为什么Datareader无法初始化?

我们在classname之前使用abstract关键字来限制创建类的实例。

但是datareader不是一个抽象类,但是我们不能创建它的实例。你可以解释为什么吗?

我搜索了它然后我发现它没有构造函数,这就是为什么我们不能创建对象,但据我所知,如果没有构造函数,那么编译器自动创建一个默认的构造函数。

请帮忙…

DbDataReader是一个抽象类。 如果您的意思是SqlDataReader ,它没有公共构造函数,这就是您无法创建实例的原因。 它只有一个internal构造函数(ILSpy):

 // System.Data.SqlClient.SqlDataReader internal SqlDataReader(SqlCommand command, CommandBehavior behavior) { // ... } 

来自MSDN :

要创建SqlDataReader必须调用SqlCommand对象的ExecuteReader方法,而不是直接使用构造函数。

通常,避免实例化DataReader是个好主意,因为它只需要通过SqlCommand.ExecuteReader创建。