我们在classname之前使用abstract关键字来限制创建类的实例。为什么Datareader无法初始化?
但datareader不是一个抽象类,但我们不能创建该实例......你能解释为什么吗?
我搜索了它,然后我发现它没有构造函数,这就是为什么我们不能创建对象,但根据我的知识,如果没有构造函数,那么编译器会自动创建一个默认构造函数。
请帮助...
我们在classname之前使用abstract关键字来限制创建类的实例。为什么Datareader无法初始化?
但datareader不是一个抽象类,但我们不能创建该实例......你能解释为什么吗?
我搜索了它,然后我发现它没有构造函数,这就是为什么我们不能创建对象,但根据我的知识,如果没有构造函数,那么编译器会自动创建一个默认构造函数。
请帮助...
DbDataReader
是一个抽象类。如果你的意思是SqlDataReader
,它没有公共构造函数,这就是为什么你不能创建一个实例。它只有一个internal
构造(ILSpy):
// System.Data.SqlClient.SqlDataReader
internal SqlDataReader(SqlCommand command, CommandBehavior behavior)
{
// ...
}
从MSDN:
要创建
SqlDataReader
,你必须通话 SqlCommand对象的ExecuteReader
方法,而不是直接使用构造函数。
一般来说,避免实例化DataReader
是个好主意,因为它只需要通过SqlCommand.ExecuteReader
创建。
我们可以这样做'System.Data.Common.DbDataReader reader = new System.Data.SqlClient.SqlDataReader();'即使sqlreader没有公共构造函数,但有默认的构造函数 –
@PranayRana:你试过编译?没有默认的构造函数,只是一个静态构造函数和我已经提到的内部构造函数。 –
IT编译时间错误,谢谢帮我理解这个... \ –
通常*你*不创建读者;你要求一个命令为你做*。你试图做什么? –