c# - 在 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;
}
}
解决方案
您所做的代码和计算没有意义,但更大的问题是您不应该存储计算字段。而是存储出生日期并计算年龄。有关如何计算,另请参阅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();
}
推荐阅读
- go - 没有任何 goroutine 但仍然得到“所有 goroutines 都在睡觉 - 死锁”
- c++ - 将函数返回值存储到变量中
- date - 谷歌表格公式
- javascript - 为什么我的 doSomething 参数没有传入
- python - Python - 如果在类中使用未声明的变量,则强制出错
- python - MATLAB 的 imgaborfilt 和 imgaussfilt 函数的 python 版本是什么?
- php - 如何修复图像名称
- php - 在 wordpress 中使用 auth_cookie_expiration 使 cookie 超时,但不适用于管理员
- php - 如何在包含while循环的表中创建表单
- python - 如何在 DataFrame 中执行 If 和 Else If 语句?