我相信我会遇到此错误,因为当方法不返回值时,我不能将非静态方法称为对象。但是问题是我不想返回一个值。公开我的实例变量并跳过DisplayDate()
方法可能会起作用,但我不必这样做,这也是不良的做法。我确定我犯了一个愚蠢的错误。
class DateTest
{
static void Main(string[] args)
{
Date In1 = new Date(7, 4, 2004);
Date In2 = new Date(11, 1, 2003);
Console.WriteLine("The initial date is: ", In1.DisplayDate());
}
}
class Date
{
private int Month { get; set; }
private int Day { get; set; }
private int Year { get; set; }
public Date(int M, int D, int Y)
{
Month = M;
Day = D;
Year = Y;
}
public void DisplayDate()
{
Console.WriteLine($"{Month}/{Day}/{Year}");
}
}
这里有两个问题,一个是DisplayDate()
不返回任何值,而您将其作为参数传递。这将导致该函数被执行,并通过参考传递返回值。但是,由于该方法是无效的,因此根本不可能具有返回值,因此无法编译。
其次,在格式字符串中,您未指定值的插入点,例如{0}
。
我建议您像这样构建您的代码。
class DateTest
{
static void Main(string[] args)
{
Date In1 = new Date(7, 4, 2004);
Date In2 = new Date(11, 1, 2003);
Console.WriteLine("The initial date is: {0}", In1.DisplayDate());
}
}
class Date
{
private int Month { get; set; }
private int Day { get; set; }
private int Year { get; set; }
public Date(int M, int D, int Y)
{
Month = M;
Day = D;
Year = Y;
}
public string DisplayDate()
{
return $"{Month}/{Day}/{Year}";
}
}
顺便说一句,在框架类中输出控制台并不是一个好习惯,因为它紧密地耦合并限制了它们的可用性。
更改:
Console.WriteLine("The initial date is: ", In1.DisplayDate());
to:
Console.Write("The initial date is: ");
In1.DisplayDate();
Console.WriteLine();
更改
Console.WriteLine("The initial date is: ", In1.DisplayDate());
to
In1.DisplayDate();
//this is inise Date class
public void DisplayDate()
{
Console.WriteLine($"The initial date is: {Month}/{Day}/{Year}");
}
Console.WriteLine(, //some kind of object here, cannot be void);
不确定您要做什么,但下面是工作。
static void Main(string[] args)
{
Date In1 = new Date(7, 4, 2004);
Date In2 = new Date(11, 1, 2003);
In1.DisplayDate();
Console.ReadLine();
//Console.WriteLine("The initial date is: ", In1.DisplayDate());
}