【问题标题】:partial class constructor not calling the base [closed]不调用基的部分类构造函数[关闭]
【发布时间】:2021-08-31 14:04:21
【问题描述】:

MyClass.cs:

namespace ConsoleApp
{
  public partial class MyClass
  {
    public string Name { get; set; }

    public MyClass()
    {
      Name = "base";
    }
  }
}

MyClass2.cs:

namespace ConsoleApp
{
  public partial class MyClass
  {
    public MyClass(string nothing) : base()
    {
    }
  }
}

程序.cs:

namespace ConsoleApp
{
  class Program
  {
    static void Main(string[] args)
    {
      MyClass myClass = new("str");

      Console.WriteLine(myClass.Name);
    }
  }
}

当我运行这个程序时,基本构造函数没有设置 myClass.Name。我在无参数构造函数中放置了一个断点,它不是从带参数的构造函数中调用的。知道这是否允许吗?如果是这样,我错过了什么?

谢谢!

【问题讨论】:

  • 您似乎将继承与部分类混合在一起。
  • ` : base()` 这是调用Object 构造函数(基类)。
  • 你应该使用: this(),而不是: base()
  • 我希望这篇文章可以继续使用......虽然它已经关闭了。有时,不是你知道或不知道什么,而是你认为你知道的实际上不是什么。只有当您提出“正确”的问题时,Google 才能提供帮助。有点像拼写检查器,它不会告诉你你的语义错误。并非每个人都可以访问支持小组来帮助解决此类主题。这就是stackoverflow如此有价值的原因。感谢所有帮助解决这个问题的人。

标签: c# constructor partial-classes


【解决方案1】:

如果您希望带参数的构造函数调用同一对象中的另一个构造函数,您应该使用 this 关键字,而不是 base

public MyClass(string nothing) : this()
{
}

在您的代码中,base 将调用基类的无参数构造函数 System.Object

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 2021-11-11
    • 2016-07-19
    • 2011-02-12
    • 2018-07-16
    • 2018-07-21
    • 1970-01-01
    • 2017-04-13
    • 2013-03-24
    相关资源
    最近更新 更多