C#';并非所有代码路径都返回值';在switch语句中使用default
本文关键字:语句 switch default 返回值 路径 代码 | 更新日期: 2023-09-27 18:24:51
我正试图编写一个程序,在用户输入的任何日期之后给出下一个日期。下面的代码是我的NextDate类。我收到一个错误,说不是所有的代码路径都为我的GetnextDate方法返回一个值,尽管我添加了一个默认值。我真的不知道发生了什么,任何帮助都将不胜感激。谢谢:)
namespace NextDate
{
class Date
{
// Variables
private int date;
private int month;
private int year;
// Methods
public Date(int d, int m, int y)
{
this.date = d;
this.month = m;
this.year = y;
}
// Display methods
public override string ToString()
{
string s;
s = "The date is " + this.date.ToString()
+ "/" + this.month.ToString()
+ "/" + this.year.ToString();
return s;
}
private int GetNextDate(int d, int m)
{
switch(m)
{
case 04:
case 06:
case 09:
case 11:
this.date = 01;
break;
default:
this.date = 31;
break;
}
}
}
}
更改
private int GetNextDate(int d, int m)
在中
private void GetNextDate(int d, int m)
错误消息是自我描述的,您没有从方法返回任何东西,而它应该返回int作为返回值(private int GetNextDate(...)
)
选项1
当你只想执行一个任务时,比如在一个方法中设置this.date
的值,你不需要该方法的返回值,所以你可以简单地将方法签名更改为:
private void GetNextDate(int d, int m)
选项2
但是,基于方法名称GetNextDate,为了制作一个更可重用的方法,最好更改该方法,以便能够从该方法返回int。
你可以写这样的东西:
private int GetNextDate(int d, int m)
{
int date = 31;
switch(m)
{
case 4:
case 6:
case 9:
case 11:
date = 1;
break;
}
return date;
}
并以这种方式使用:
this.date= GetNextDate(...);
没有一个路径返回值。方法应返回int
,或者返回类型应为void
。
该方法不返回任何内容,但返回类型为int
。
也许您想返回01
或31
而不是设置this.date
?
return this.date;
或者,如果您想设置它,但不返回任何内容,请将返回类型从int
更改为void
。