当前上下文中不存在名称年龄

时间:2014-04-15 19:12:47

标签: c# scope calculator

我有一项任务是在Visual Studio上用C#编写一个简单的程序,从控制台读取你的出生日期,打印现在的年龄和十年后的年龄。

我找到了一个Microsoft教程并决定使用它,但它出错了。这是教程:http://channel9.msdn.com/Series/Twenty-C-Questions-Explained/14

我没有完成任务,我看到以下错误:'The name age does not exist in the current context'

namespace AgeAfterTenYears
{
    class AgeAfterTenYears
    {
        static void Main()
        {
            Console.WriteLine("Enter birthdate - DD/MM/YYYY");
            string birthdate = Console.ReadLine();
            DateTime bd = Convert.ToDateTime(birthdate);
            DateTime curDate = DateTime.Today;
            if (bd > curDate)
            {
                Console.WriteLine("Birthdate must be equal to or before today");
            }
            else
            {
                int age = curDate.Year - bd.Year;
            }

            if (bd.Month > curDate.Month)
            {
                age--;
            }
            Console.WriteLine("You are: {0} years old", age);
        }
    }
}

我找到了不同的解决方案,但我真的很想了解我的错误。可能这是一些愚蠢的事情,但我在第一堂课之后这样做了......

任何帮助都将不胜感激。

6 个答案:

答案 0 :(得分:1)

您在age声明中声明else

else
{
    int age = curDate.Year - bd.Year;
}

这意味着else语句之外的代码不能"参见"变量age。它超出了范围。

您应该将变量声明移到第一个if语句之上。

答案 1 :(得分:1)

您可能应修改else部分,如下所示:

else
{
    int age = curDate.Year - bd.Year;
    if (bd.Month > curDate.Month)
    {
        age--;
    }
    Console.WriteLine("You are: {0} years old", age);
}

答案 2 :(得分:0)

这里不存在

age

if (bd.Month > curDate.Month)
{
    age--;
}

int age如果您想要访问它,则应在if-else之外宣布。

int age = 0;

if (bd > curDate)
{
    Console.WriteLine("Birthdate must be equal to or before today");
}
else
{
    age = curDate.Year - bd.Year;
}

if (bd.Month > curDate.Month)
{
    age--;
}

答案 3 :(得分:0)

age移到else块之外,并为其指定默认值:

int age = 0;

if(...)
{
...
}
else
{
...
}

答案 4 :(得分:0)

变量age仅在else块中声明,并且您尝试在下一个if块中使用它,其中未声明。

答案 5 :(得分:-1)

    using System;

    namespace AgeAfterTenYears
    {
    class AgeAfterTenYears
    {
    static void Main()
    {
        var age = 0;
        Console.WriteLine("Enter birthdate - DD/MM/YYYY");
        string birthdate = Console.ReadLine();
        DateTime bd = Convert.ToDateTime(birthdate);
        DateTime curDate = DateTime.Today;
        if (bd > curDate)
        {
            Console.WriteLine("Birthdate must be equal to or before today");
        }
        else
        {
            age = curDate.Year - bd.Year;
        }
        if (bd.Month > curDate.Month)
        {
           age = --set your age here//curDate.Year - bd.Year
        }
        Console.WriteLine("You are: {0} years old", age);
    }

}