C# 局部变量不断获取错误消息、新的datetime时间戳,并且所有代码都不会显示在cmd.exe中

C# 局部变量不断获取错误消息、新的datetime时间戳,并且所有代码都不会显示在cmd.exe中,c#,C#,我对这段代码有3个问题,我想寻求一些帮助 我似乎每次在person2中都会收到一条错误消息,称为myAge和DateOfBirth的局部变量已经在这个范围中定义了?这怎么可能 我的第二个问题是,我似乎无法从球员的出生日期中删除时间戳。。我只需要日期,不需要时间戳 我的第三个也是最后一个问题是,所有代码不会同时显示在cmd.exe中?我必须按enter键才能显示下一个玩家,但我想同时显示所有玩家 有人能帮忙吗?提前谢谢你 public enum Gendertype { Male, Fem

我对这段代码有3个问题,我想寻求一些帮助

  • 我似乎每次在person2中都会收到一条错误消息,称为myAge和DateOfBirth的局部变量已经在这个范围中定义了?这怎么可能

  • 我的第二个问题是,我似乎无法从球员的出生日期中删除时间戳。。我只需要日期,不需要时间戳

  • 我的第三个也是最后一个问题是,所有代码不会同时显示在cmd.exe中?我必须按enter键才能显示下一个玩家,但我想同时显示所有玩家

  • 有人能帮忙吗?提前谢谢你

        public enum Gendertype { Male, Female };
        public class Person
        {
        public string FirstName { get; set; }
        public string MiddleName { get; set; }
        public string LastName { get; set; }
        public DateTime DateOfBirth { get; set; }
        public string Nationality { get; set; }
        public Gendertype Gender { get; set; }
    
        public Person(string fn, string mn, string ln, DateTime dob, string n, Gendertype g)
        {
            FirstName = fn;
            MiddleName = mn;
            LastName = ln;
            DateOfBirth = dob;
            Nationality = n;
            Gender = g;
        }
    
    }
    class Program
    { 
    static void Main()
    {
        Person person1 = new Person("Rafael" + "\n", "" + "\n", "Nadal" + "\n", new DateTime(1986,06, 03), "Spanish" + "\n", Gendertype.Male);
        Console.WriteLine("Player 1: \n First name = {0} Middle name = {1 } Last name = {2} Date of birth = {3} \n Nationality = {4} Gender = {5}", person1.FirstName, person1.MiddleName, person1.LastName, person1.DateOfBirth, person1.Nationality, person1.Gender);
            DateTime DateOfBirth = DateTime.Parse("1986/06/03");
            TimeSpan myAge = DateTime.Now.Subtract(DateOfBirth);
            Console.WriteLine(" Age:");
            Console.WriteLine(myAge.TotalDays/365);
            Console.ReadLine();
    
                Person person2 = new Person("Rafael" + "\n", "" + "\n", "Nadal" + "\n", new DateTime(1988, 07, 04), "Spanish" + "\n", Gendertype.Male);
                Console.WriteLine("Player 2: \n First name = {0} Middle name = {1 } Last name = {2} Date of birth = {3} \n Nationality = {4} Gender = {5}", person2.FirstName, person2.MiddleName, person2.LastName, person2.DateOfBirth, person2.Nationality, person2.Gender);
                DateTime dob = DateTime.Parse("1988/07/04");
                TimeSpan Age = DateTime.Now.Subtract(DateOfBirth);
                Console.WriteLine(" Age:");
                Console.WriteLine(myAge.TotalDays / 365);
                Console.ReadLine();
    
    
                person2.FirstName = "Molly";
                Console.WriteLine("Player 2: \n First name = {0} Middle name = {1 } Last name = {2} Date of birth = {3} \n Nationality = {4} Gender = {5}", person1.FirstName, person1.MiddleName, person1.LastName, person1.DateOfBirth, person1.Nationality, person1.Gender);
                Console.WriteLine("person1 Name = {0} Age = {1}", person2.FirstName, person2.DateOfBirth);
    
    
                Console.WriteLine("Press any key to exit.");
                Console.ReadKey();
            }
      }
    
    }

  • 在声明person1之后,您已经在Main()函数中声明了myAge/DateOfBirth变量:

    DateTime-DateOfBirth=DateTime.Parse(“1986/06/03”)

    TimeSpan myAge=DateTime.Now.Subtract(出生日期)

  • 我假设在声明person2之后,您正试图声明另一对同名变量,但您仍然在同一个Main()函数中。编译器正在抱怨您在声明变量时已经声明了变量。要解决这个问题,只需去掉第二行的
    DateTime
    TimeSpan
    部分。这样,您就不会试图用相同的名称声明新变量,而是使用旧的变量

  • 您正在使用
    DateTime.Now
    计算年龄,其中包括小时、秒和毫秒。如果只想获取日期,请尝试DateTime.Today()。对于文本友好的输出,您应该查看DateTime格式以获得正确的输出()

  • 在每组输出之后都有一个Console.ReadLine()调用。这将停止代码的常规执行,以等待用户输入。只要去掉这些行,它就会立即执行

  • 试试这个

    public enum Gendertype { Male, Female };
        public class Person
        {
        public string FirstName { get; set; }
        public string MiddleName { get; set; }
        public string LastName { get; set; }
        public DateTime DateOfBirth { get; set; }
        public string Nationality { get; set; }
        public Gendertype Gender { get; set; }
        public int Age 
        {
            return DateTime.Now.Subtract(DateOfBirth).TotalDays / 365;
        }
        public Person(string fn, string mn, string ln, DateTime dob, string n, Gendertype g)
        {
            FirstName = fn;
            MiddleName = mn;
            LastName = ln;
            DateOfBirth = dob;
            Nationality = n;
            Gender = g;
        }
    
    }
    class Program
    { 
        static void Main()
        {
            Person person1 = new Person("Rafael" + "\n", "" + "\n", "Nadal" + "\n", new DateTime(1986,06, 03), "Spanish" + "\n", Gendertype.Male);
            Console.WriteLine("Player 1: \n First name = {0} Middle name = {1 } Last name = {2} Date of birth = {3} \n Nationality = {4} Gender = {5}", person1.FirstName, person1.MiddleName, person1.LastName, person1.DateOfBirth, person1.Nationality, person1.Gender);
    
            Console.WriteLine(" Age:");
            Console.WriteLine(person1.Age);
            //Console.ReadLine(); this waits for your enter key
    
            Person person2 = new Person("Rafael" + "\n", "" + "\n", "Nadal" + "\n", new DateTime(1988, 07, 04), "Spanish" + "\n", Gendertype.Male);
            Console.WriteLine("Player 2: \n First name = {0} Middle name = {1 } Last name = {2} Date of birth = {3} \n Nationality = {4} Gender = {5}", person2.FirstName, person2.MiddleName, person2.LastName, person2.DateOfBirth, person2.Nationality, person2.Gender);
    
            Console.WriteLine(" Age:");
            Console.WriteLine(person2.Age);
            //Console.ReadLine(); this waits for your enter key
    
    
            person2.FirstName = "Molly";
            Console.WriteLine("Player 2: \n First name = {0} Middle name = {1 } Last name = {2} Date of birth = {3} \n Nationality = {4} Gender = {5}", person1.FirstName, person1.MiddleName, person1.LastName, person1.DateOfBirth, person1.Nationality, person1.Gender);
            Console.WriteLine("person1 Name = {0} Age = {1}", person2.FirstName, person2.DateOfBirth.ToShortDateString());
    
    
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
         }
    }
    

    1) 如果错误消息是您无法共享的秘密,我们将无法帮助您。2) DateTime类型始终由日期和时间组成-如果需要特定的输出格式(如“yyyy/MM/dd”),请在呈现输出时指定它。3) 您确实放置了那些
    Console.ReadLine()在那里,这就是控制台所做的。1)您向我们展示的代码没有显示此问题。2) 
    Console.WriteLine
    使用,您可以指定输出的格式如下:
    出生日期={3:yyyy/MM/dd}
    ,3),因为您将
    Console.ReadLine()放在在每一个之后,使其暂停,直到您点击回车键;阅读“如果标准输入设备是键盘,ReadLine方法会一直阻塞,直到用户按下Enter键。”请注意,您的年龄计算也不正确。请参见和。