C# 继承和默认构造函数

2023-11-24

假设有一个基类A和一个班级B源自A。 那么我们知道类的构造函数A永远不会被类继承B。然而,当一个新对象B创建,然后 - 类的默认构造函数A在类的默认/自定义构造函数之前调用B被调用。也许这样做的目的是类的字段A需要初始化为默认值。

现在,假设该类A定义了一个自定义构造函数。这意味着类的默认构造函数A被编译器默默删除。现在,创建一个新的类实例B, 类的哪个构造函数A在调用类之前自动调用B的构造函数? (班级怎么样A在这种情况下字段会被初始化吗?)


现在,创建一个新的类实例B, 类的哪个构造函数A在调用类之前自动调用B构造函数?

基本上,代码将无法编译。每个构造函数必须隐式或显式链接到另一个构造函数。它链接到的构造函数可以位于同一个类中(this)或基类(与base).

像这样的构造函数:

public B() {}

隐式地是:

public B() : base() {}

...如果您根本不指定构造函数,它将以相同的方式隐式添加 - 但它仍然必须有一些东西可以调用。例如,您的场景:

public class A
{
    public A(int x) {}
}

public class B : A {}

导致编译器错误:

错误CS7036:没有给出与所需的形式参数相对应的参数'x' of 'A.A(int)'

但是,您可以显式指定不同的构造函数调用,例如

public B() : base(10) {} // Chain to base class constructor

or

public B() : this(10) {} // Chain to same class constructor, assuming one exists
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 继承和默认构造函数 的相关文章

  • UTF8/UTF16 和 Base64 在编码方面有什么区别

    In c 我们可以使用下面的类来进行编码 System Text Encoding UTF8 System Text Encoding UTF16 System Text Encoding ASCII 为什么没有System Text En
  • boost::multi_index_container 复合键中的 equal_range 与比较运算符

    我正在尝试从多索引容器查询结果 其中值类型是三个元素的结构 第一个值已给出 但第二个和第三个值必须大于或小于查询参数 经过搜索后 我发现必须实现自定义密钥提取器 并且这里的一些链接建议相同 但我无法实现它 boost multi index
  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • char指针或char变量的默认值是什么[重复]

    这个问题在这里已经有答案了 下面是我尝试打印 char 变量和指针的默认值 值的代码 但无法在控制台上看到它 它是否有默认值或只是无法读取 ASCII 范围 include
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • JAVA 中带有 JSON 字符串的 HTTP POST 请求

    我必须使用我已经生成的 JSON 字符串发出 http Post 请求 我尝试了两种不同的方法 1 HttpURLConnection 2 HttpClient 但我从他们两个那里得到了同样的 不想要的 结果 到目前为止我的代码HttpUR
  • TextEncodings.Base64Url.Decode 与 Convert.FromBase64String

    我正在致力于创建一种生成 JWT 令牌的方法 该方法的一部分从我的 web config 中读取一个值 该值作为 秘密 用于生成用于创建 JWT 令牌签名的哈希值
  • 删除 Firestore 集合中的所有文档

    我正在寻找一种方法来清除整个集合 我看到有一个批量更新选项 但这需要我知道集合中的所有文档 ID 我正在寻找一种方法来简单地删除集合中的每个文档 Edit 下面的答案是正确的 我使用了以下内容 func delete collection
  • mongodb打开连接问题

    我的 mongo 控制台中有以下日志 Tue Jul 23 17 20 01 301 initandlisten waiting for connections on port 27017 Tue Jul 23 17 20 01 401 w
  • 如何删除 VB.NET 中的事件处理程序[重复]

    这个问题在这里已经有答案了 可能的重复 VB NET RemoveHandler 和匿名方法 如果我添加这样的事件处理程序 AddHandler s Click AddressOf Panel1 Click 我怎样才能删除事件处理程序 Pr
  • Apache 2.4.37 与 openssl 1.1.1:无法执行握手后身份验证

    我将 apache 更新到最新版本 2 4 37 将 openssl 更新到 1 1 1 现在 当客户端进行身份验证时 我仅在 Firefox 63 中收到此错误 但在 Chrome 中则不会 ssl error AH verify cli
  • 使用子模块将 Git 推送到 azure 网站

    到目前为止 我已经通过 Git 将站点发布到 Windows Azure 网站 没有出现任何问题 但今天我们向项目添加了一个子模块 而 Azure 似乎不喜欢使用子模块 构建失败 因为我的应用程序依赖于子模块 而 Azure 看到的是空文件
  • 如何使用 get_posts 获取大于 X (ID) 的帖子

    args array numberposts gt 10 tag gt my tag ID gt 555 posts get posts args 我只想从特定标签中获取 10 条记录 并且 ID 小于数字 有没有办法用 get posts
  • 如何 $watch 指令中的多个内插属性?

    我不明白如何在链接函数中同时监视多个属性 因此我创建了一个包含所有参数的对象并监视它 但我注意到链接函数中的属性是一个字符串而不是一个对象 所以我使用 angular fromJson val 我发现的所有示例都只使用一个参数 您能解释一下
  • Symfony2 没有要处理的元数据类

    创建实体后 php app console doctrine generate entity 并在使用时 php app console doctrine schema update force 我遇到过 没有要处理的元数据类 Entity
  • 相对于 HTML 中的绝对路径

    我需要通过 URL 创建新闻通讯 为此 我 创建一个WebClient 使用WebClient的方法DownloadData获取字节数组中的页面源 从 source html 字节数组中获取字符串并将其设置为新闻通讯内容 但是 我在路径方面
  • PostSharp后pdb文件丢失

    我正在使用 PostSharp 版本 2 1 6 4 也尝试了最新版本 2 1 7 35 有时 pdb 文件丢失 并且其中有一个 pssym 文件
  • 拥有 SQLite 和多个表的自己的 ContentProvider

    我在读本教程关于实现我自己的 ContentProvide 以使用 SQLite 在 ContentProvider query 中 有一些事情让我困惑 它似乎非常硬编码为一张表 教程中的待办事项表 但也许我只是不明白 现在 如果我想查询另
  • Python-删除旧文件

    我对 python 有点陌生 一直在尝试自己解决这个问题 但到目前为止只得到了一些零碎的东西 基本上 我正在寻找一个脚本 它将递归搜索目录及其子目录 并删除至少 24 小时前的文件 但不会更改目录 非常感谢任何建议或示例 这使用了os wa
  • jQuery 真正支持哪些 CSS3 选择器,例如:第n个最后一个孩子()?

    根据http api jquery com category selectors 我们可以在 jQuery 中使用大量的 CSS 选择器 但是例如 nth last child 那里没有提到 然而 当我测试以下内容时 使用来自 Google
  • 生成固定长度整数分区的所有唯一排列的算法?

    我正在寻找一种生成整数固定长度分区的所有排列的算法 顺序并不重要 例如 对于 n 4 且长度 L 3 0 2 2 2 0 2 2 2 0 2 1 1 1 2 1 1 1 2 0 1 3 0 3 1 3 0 1 3 1 0 1 3 0 1 0
  • 单个 Git 存储库中的公共和私有代码

    我参与的一个研究小组目前将所有代码托管在一个私有 SVN 存储库中 我们想开放我们的代码并将大部分代码移至 Github 上 问题是 有些代码是敏感的 不应该开放 但我们仍然希望它处于版本控制之下 目前 我们在 Github 上有开放代码
  • WPF:PropertyChangedCallback 仅触发一次

    我有一个用户控件 它公开一个名为 VisibileItems 的 DependencyProperty 每次更新该属性时 我都需要触发另一个事件 为了实现这一点 我添加了带有 PropertyChangedCallback 事件的 Fram
  • 限制对 Elastic Beanstalk 的 HTTP 访问

    是否可以将对 Elastic Beanstalk 应用程序的 HTTP 访问限制为仅某些 IP 地址 我已尝试向环境的安全组添加规 则 但这些规则似乎没有任何效果 这是因为所有 HTTP 流量都是通过弹性负载均衡器路由的吗 isn t安全组
  • C# 继承和默认构造函数

    假设有一个基类A和一个班级B源自A 那么我们知道类的构造函数A永远不会被类继承B 然而 当一个新对象B创建 然后 类的默认构造函数A在类的默认 自定义构造函数之前调用B被调用 也许这样做的目的是类的字段A需要初始化为默认值 现在 假设该类A