C# C简单构造函数重载

C# C简单构造函数重载,c#,C#,我正在进行一个非常简单的重载构造函数练习,但遇到了一个无重载的参数获取过程。我认为我做得对,但也许我做错了什么 namespace A3_Date_StudentWork { class MyDate { private int newMonth; private int newDay; private int currentMonth;

我正在进行一个非常简单的重载构造函数练习,但遇到了一个无重载的参数获取过程。我认为我做得对,但也许我做错了什么

   namespace A3_Date_StudentWork
    {
        class MyDate
        {      


            private int newMonth;
            private int newDay;
            private int currentMonth;
            private int currentDay;

            public MyDate(int month, int day)
            {
               newMonth = month;
               newDay = day;
            }

            public MyDate(int month, int day, int cmonth, int cday)
            {
                newMonth = month;
                newDay = day;
                currentMonth = cmonth;
                currentDay = cday;
            }
        }
    }
以下是我的新对象在main中的外观

    MyDate today = new MyDate(todayMonth, todayDay);

    MyDate bday = new MyDate(bdayMonth, bdayDay);

    MyDate combine = new MyDate(bdayMonth, bdayDay, todayMonth, todayDay);
这是一个非常简单的程序,我的所有变量都是int。我的整个主要变量是:

    static void Main(string[] args)
    {

        int todayMonth = 0;
        int todayDay = 0;
        int bdayMonth = 0;
        int bdayDay = 0;


        Console.WriteLine("What is today's month?");
        Int32.TryParse(Console.ReadLine(), out todayMonth);
       // Console.WriteLine(todayMonth);

        Console.WriteLine("What is today's date?");
        Int32.TryParse(Console.ReadLine(), out todayDay);
       // Console.WriteLine(todayDay);

        Console.WriteLine("What is your birth month?");
        Int32.TryParse(Console.ReadLine(), out bdayMonth);
       // Console.WriteLine(bdayMonth);

        Console.WriteLine("What is your birth date?");
        Int32.TryParse(Console.ReadLine(), out bdayDay);
       // Console.WriteLine(bdayDay);

        MyDate today = new MyDate(todayMonth, todayDay);
        MyDate bday = new MyDate(bdayMonth, bdayDay);
        MyDate combine = new MyDate(bdayMonth, bdayDay, todayMonth, todayDay);
这是带有构造函数的基类

    {
class MyDate
{      


    private int newMonth;
    private int newDay;
    private int currentMonth;
    private int currentDay;

    public MyDate(int month, int day)
    {
       newMonth = month;
       newDay = day;
    }

    public MyDate(int month, int day, int cmonth, int cday)
    {
        newMonth = month;
        newDay = day;
        currentMonth = cmonth;
        currentDay = cday;
    }

基类实际上是MyDate类,这只是技术方面的一条建议。 当您有多个构造函数时,您应该从一个构造函数调用另一个,如果可能的话,通过传递值。这也称为“构造函数链接”

下面是一个基于您的代码的示例:

class MyDate
{
    private int newMonth;
    private int newDay;
    private int currentMonth;
    private int currentDay;

    public MyDate(int month, int day)
       : this(month, day, 0, 0)
    { }

    public MyDate(int month, int day, int cmonth, int cday)
    {
        newMonth = month;
        newDay = day;
        currentMonth = cmonth;
        currentDay = cday;
    }
}

在这个简单的例子中,当您使用2个参数month和day调用构造函数时,其他参数默认为0。您还可以将参数设置为null,以便为其分配null值。

创建新对象的调用在哪里?尝试创建MyDate的代码在哪里?您的构造函数看起来不错,请向我们显示创建instanceMyDate bday=new MyDatebdayMonth,bdayDay的代码;MyDate合并=新建MyDatebdayMonth、bdayDay、todayMonth、todayDay;什么基类?你没有任何技术术语,因为这是构造函数链接。谢谢,我一直在寻找这个术语,但记不起来了-没错,但并没有真正回答问题。事实上,没有人能真正回答这个问题,因为OP还没有提供足够的信息。这应该是一条评论。我知道这应该是一条评论,但当我把它放在评论中时,它将不可读。对今后的工作有什么建议吗?作为评论,你应该简要说明你的观点。。你应该考虑阅读构造函数链接,其中构造函数链接是链接到一个地方来阅读它,你可以使用[描述]链接来创建链接。