Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是什么使C#中的SqlDataReader类不可继承或不可实例化_C#_Sqldatareader - Fatal编程技术网

是什么使C#中的SqlDataReader类不可继承或不可实例化

是什么使C#中的SqlDataReader类不可继承或不可实例化,c#,sqldatareader,C#,Sqldatareader,需要了解C#如何使SqlDataReader类不可继承和不可实例化 命名空间:System.Data.SqlClient SqlDataReader类标题: public class SqlDataReader : System.Data.Common.DbDataReader, IDisposable, System.Data.Common.IDbColumnSchemaGenerator{ } 问题1: 看到的班级是公开的 既然类是public::那么为什么不能继承它呢 问题2: 构造函

需要了解C#如何使SqlDataReader类不可继承和不可实例化

命名空间:System.Data.SqlClient

SqlDataReader类标题:

public class SqlDataReader : System.Data.Common.DbDataReader, IDisposable, System.Data.Common.IDbColumnSchemaGenerator{

}
问题1: 看到的班级是公开的

既然类是public::那么为什么不能继承它呢

问题2: 构造函数不是私有的:事实上,在看到SqlDataReader的定义时:没有看到构造函数::所以我猜C#将标记为默认的默认构造函数将是公共构造函数,当没有找到构造函数时会发生这种情况: 因此,尽管假设有一个公共构造函数,为什么实例化不可能呢

此外,我找不到在这个问题链接中回答和接受的“内部”构造函数:


如果能突出上述想法中的错误点,我将不胜感激。

我不确定您正在查看的源代码(可能是基本的反汇编)。 看看github


它只有内部构造函数,因此不能实例化。

“构造函数不是私有的”您怎么知道?你有权访问源代码吗?。另外,您的链接问题并没有说明类是内部的,只有构造函数。这意味着该类可以从
System.Data
dll外部看到,但不能从外部实例化,这意味着您也不能继承它,因为从它继承的任何类都不能在副本中实例化其基本classIt:“SqlDataReader类型的构造函数标记为internal”。“internal SqlDataReader”(SqlCommand命令,CommandBehavior)“:源代码:
内部SqlDataReader(SqlCommand命令,CommandBehavior行为){…}
。您是如何检查“源代码”的可能是用一些工具,只是反编译一个程序集。但是,这不一定会给你实际的代码。希姆布罗姆比尔:谢谢你的回答:是的,这是一个重复的问题,需要一个答案给一个很晚才开始问基本问题的人。但是这个问题不允许我再问,因为我没有要点就在几分钟后,我猜这个问题也被其他一些成员解决了。有什么建议我可以遵循更好的路线吗?杰克:谢谢,到目前为止,我一直在看Visual Studio代码中的定义(F12)……我想它甚至会向我展示构造函数的元数据。是的,这只是展示了声明。