C#在另一个布尔方法中引用布尔方法的返回值

时间:2018-10-04 23:50:01

标签: c#

我想知道如何在另一个方法中使用布尔方法的结果。下面的代码包含两种方法,一种名为ValidateDay,另一种称为IsLeapYearIsLeapYear确定用户输入的整数是否为a年。 ValidateDay根据用户输入的月份数检查用户输入的日期是否为有效日期。为了检查2月29日是否是有效的一天,我需要ValidateDay方法来知道IsLeapYear的结果是对还是错。但是,我不确定如何在IsLeapYear方法中引用ValidateDay的返回值。任何建议将不胜感激。

// Determines if day is valid
    public Boolean ValidateDay()
    {
        IsLeapYear();

        if(Month == 1 || Month == 3 || Month == 5 || Month == 7 || Month == 8 || Month == 10 || Month == 12)
        {
            if (Day >= 1 && Day <= 31)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else if (Month == 4 || Month == 6 || Month == 9 || Month == 11)
        {
            if (Day >= 1 && Day <= 30)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else if (Month == 2 && IsLeapYear(true))
        {
            if (Day >= 1 && Day <= 29)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        else if (Month == 2 && IsLeapYear(false))
        {
            if (Day >= 1 && Day <= 28)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

    // Determine if year is a leap year
    public Boolean IsLeapYear()
    {
        if ((Year % 4 == 0 && Year % 100 != 0) || (Year % 400 == 0))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

3 个答案:

答案 0 :(得分:2)

在下面的行中,将值true传递给IsLeapYear()方法:

else if (Month == 2 && IsLeapYear(true))

但是您的IsLeapYear()方法没有任何参数,我猜测您打算在此处执行的操作是评估IsLeapYear()的结果是否为真。只需将其更改为以下内容即可:

else if (Month == 2 && IsLeapYear() == true)

或更简洁:

else if (Month == 2 && IsLeapYear())

要检查该值是否为假,只需使用!要求值的表达式前的字符:

else if (Month == 2 && !IsLeapYear())

或者,如果您愿意:

else if (Month == 2 && IsLeapYear() == false)

答案 1 :(得分:0)

我认为您可以尝试使用IsLeapYear()!IsLeapYear()来检查是否为LeapYear。

else if (Month == 2 && IsLeapYear())
{
    if (Day >= 1 && Day <= 29)
    {
        return true;
    }
    else
    {
        return false;
    }
}
else if (Month == 2 && !IsLeapYear())
{
    if (Day >= 1 && Day <= 28)
    {
        return true;
    }
    else
    {
        return false;
    }
}

.net库中有一个DateTime.IsLeapYear方法,我将用它来检查年份是否为LeapYear。

DateTime.IsLeapYear(year)

答案 2 :(得分:0)

我确实觉得您有点麻烦了。

尝试这种方法:

public Boolean ValidateDay()
{
    try
    {
        return Day >= 1 && Day <= DateTime.DaysInMonth(Year, Month);
    }
    catch (ArgumentOutOfRangeException)
    {
        return false;
    }
}

public Boolean IsLeapYear()
{
    try
    {
        return DateTime.IsLeapYear(Year);
    }
    catch (ArgumentOutOfRangeException)
    {
        return false;
    }
}