我有一堂课如下:
class Member
{
public string Name { get; set; }
public DateTime Birthday { get; set; }
private int _age;
public int Age
{
get { return _age; }
private set { _age = DateTime.Now.Year - Birthday.Year; }
}
}在主要的方法中,我分配成员值,我想得到每个成员的年龄,但是每个结果都是零,为什么?如何解决这个问题?谢谢!
class Program
{
static void Main(string[] args)
{
List<Member> memberList = new List<Member>(); //using System.Collections.Generic;
memberList.Add(new Member() { Name = "Andy", Birthday = new DateTime(1971, 7, 26)});
memberList.Add(new Member() { Name = "Mike", Birthday = new DateTime(1982, 1, 17)});
memberList.Add(new Member() { Name = "Lucy", Birthday = new DateTime(1993, 9, 28)});
foreach (var m in memberList)
{
Console.WriteLine(m.Age); //m.Age = 0
}
}
}```发布于 2022-07-19 06:17:56
您需要像这样更新类,因为setter没有执行操作,因为您在get上返回变量,这就是为什么得到0:
public class Member
{
public string Name { get; set; }
public DateTime Birthday { get; set; }
public int Age
{
get { return DateTime.Now.Year - Birthday.Year; }
}
}在改变之后,您可以得到agre,顺便说一句,您可以更准确地计算年龄。
发布于 2022-07-19 06:13:08
请像这样从getter方法中返回年龄。
class Member
{
public string Name { get; set; }
public DateTime Birthday { get; set; }
private int _age;
public int Age
{
get { return DateTime.Now.Year - Birthday.Year; }
private set { _age = DateTime.Now.Year - Birthday.Year; }
}
}可以从setter方法中删除计算。
请看输出-

https://stackoverflow.com/questions/73031809
复制相似问题