首页 > 解决方案 > 在 C# 的自定义类中使用方法时遇到问题

问题描述

我创建了一个名为“Person”的类,我正在尝试编写一个名为 Birthday 的方法,它将属性“Age”增加一个。我知道尝试使用 Age 定义变量是愚蠢的,但我不知道如何将变量从 Main 传递到 Person.Birthday。我也可能不需要那个while循环,但我只是在尝试一堆东西。无论如何,我们将不胜感激。

class Program
{
    static void Main(string[] args)
    {
        Person p1 = new Person();
        p1.Name = "Frank";
        p1.Age = 30;
        p1.Gender = "Male";
        p1.Birthday();

        Console.WriteLine(p1.Age);
        Console.ReadLine();
    }

class Person
{
    public string Name { get; set; }
    public string Gender { get; set; }
    public int Age { get; set; }

    public int Birthday()
    {
        int newAge = Age;

        while (Age > 0)
        {
            newAge += 1;
            break;
        }

        return newAge;
    }
}

标签: c#classmethods

解决方案


您所做的代码和计算没有意义,但更大的问题是您不应该存储计算字段。而是存储出生日期并计算年龄。有关如何计算,另请参阅https://stackoverflow.com/a/1404/1260204 。

public class Person
{
    public string Name { get; set; }
    public string Gender { get; set; }
    public DateTime BirthDate { get; set; }


    public int Age 
    { get { 
        // copied from https://stackoverflow.com/a/1404/1260204
        var today = DateTime.Today;
        var age = today.Year - BirthDate.Year;
        if (birthdate > today.AddYears(-age)) {
            age--;
        }
        return age;
    }}
}

调用方法

static void Main(string[] args)
{
    Person p1 = new Person();
    p1.Name = "Frank";
    p1.Age = 30;
    p1.Gender = "Male";
    p1.BirthDate = new DateTime(1986, 5, 12);

    Console.WriteLine(p1.Age);
    Console.ReadLine();
}

推荐阅读