为什么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
创建。