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;
            }
        }
    }
}

C#';并非所有代码路径都返回值';在switch语句中使用default

更改

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

也许您想返回0131而不是设置this.date

return this.date;

或者,如果您想设置它,但不返回任何内容,请将返回类型从int更改为void