我创建了一个名为" Person"我试图写一个名为Birthday的方法来增加属性" Age"一个人。我知道尝试使用Age定义一个变量是愚蠢的,但是我无法弄清楚如何将一个变量从Main传递给Person.Birthday。我也可能不需要循环,但我只是尝试了很多东西。无论如何,帮助将不胜感激。
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;
}
}
答案 0 :(得分:0)
您正在进行的代码和计算没有意义,但更大的问题是您不应存储计算字段。而是存储出生日期并计算年龄。另请参阅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();
}
答案 1 :(得分:0)
您的代码存在一些问题。
首先你不应该存储"年龄"一个人,你应该存储他们出生的日期,这样你就可以随时计算年龄。
public DateTime BirthDate { get; set; }
二;考虑创建一个人。在您的代码中,您创建了一个新人,然后分配他们的Name
,Gender
和BirthDate
属性。这真的是最好的方式吗?一个人有来拥有姓名,性别和出生日期吗?此外,这些属性不会改变(或者至少他们不应该轻易改变)。因此,让你的Person
类有一个接受这些参数的构造函数,然后设置这些属性private
:
public string Name { get; private set; }
public string Gender { get; private set; }
public DateTime BirthDate { get; private set; }
public Person(string name, string gender, DateTime birthDate)
{
Name = name;
Gender = gender;
BirthDate = birthDate;
}
然后,为了计算某人的年龄,您只需比较GetCurrentAge()
方法中的日期,然后就可以使用现有的Age
属性,但可以使用#34;只读#34;只需返回GetCurrentAge()
:
public int Age => GetCurrentAge();
private int GetCurrentAge()
{
DateTime today = DateTime.Today;
int age = today.Year - BirthDate.Year;
if (BirthDate > today.AddYears(-age))
{
age--;
}
return age;
}