是什么使C#中的SqlDataReader类不可继承或不可实例化
需要了解C#如何使SqlDataReader类不可继承和不可实例化 命名空间:System.Data.SqlClient 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: 构造函
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)……我想它甚至会向我展示构造函数的元数据。是的,这只是展示了声明。