[英]C# simple constructor overload
我正在做一个非常简单的重载构造函数练习,但是遇到了没有重载的发现参数的情况。 我以为我做对了,但是也许我做错了什么?
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;
}
}
}
这是我的主要新对象的样子
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个参数(月和日)调用构造函数时,其他参数默认为0。 您还可以使参数可为空,以便可以为其分配空值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.