如何将日期时间参数传递给条件方法



我正在学习面向对象编程。我有一个类Dob,它从main读取出生日期。如果 main 的出生日期是从 10 年前到现在,它说"错误",否则"验证"。这是我的班级

public DateTime _Dob;
private DateTime dob {
 get {
  return _Dob;
 }
 set {
  _Dob = value;
 }
}

public Student(DateTime dob_) {
 _Dob = dob;
}
public void checkdob(DateTime dob) {
 DateTime local = DateTime.Now;
 if (dob.Year >= local.Year - 10)) {
 Console.WriteLine("error");
} else {
 Console.WriteLine("verify");
}

现在我想从主要传递出生日期,但我不知道该怎么做。这是我的主要内容(它有错误,我不知道如何解决(:

Student dob = new Student(new DateTime(23/02/2010));
dob.checkdob( 02/12/2010);
Console.ReadLine();

首先,你property的方式是错误的。这个想法是你通过公共属性公开私有字段的价值,而不是相反:

private DateTime _dob;
public DateTime Dob
{
    get { return _dob; }
    set { _dob = value; }
}

但是,如果您无论如何都不使用公共属性,请不要公开它。

现在,将日期传递给类的构造函数,然后在要检查它时再次传递它似乎很奇怪。使用已有的值。

    public void CheckDdob()
    {
        if (_dob.Year >= DateTime.Now.Year -10))
        { 
            Console.WriteLine("error"); 
        }
        else
        { 
            Console.WriteLine("verify"); 
        }
    }

然后,若要为构造函数创建新DateTime,只需使用以下命令:

Student dob = new Student(new DateTime(2010, 02, 23));

最后,您可能需要查看您的逻辑,因为您实际上并没有正确检查日期是否超过 10 年前。再说一次,您拥有的东西可能符合您的要求。

您需要

DateTime使用正确的构造函数参数。这里列出了很多。

你可以从使用这个开始,

new DateTime(2010,02,23)

只是一个关于如何解决这个问题的例子:

using System;
public class Student
{
    public Student(string name, DateTime dateOfBirth)
    {
        Name = name;
        DateOfBirth = dateOfBirth;
    }
    public string Name { get; private set; }
    public DateTime DateOfBirth { get; private set; }
}
public static class Helpers
{
    public static bool IsOlderThen(this DateTime date, TimeSpan age)
    {
        var now = DateTime.UtcNow;
        return now - date > age;
    }
}   
public class Program
{
    public static void Main()
    {
        var adult = TimeSpan.FromDays(365 * 18);
        var studentOld = new Student("Alice", DateTime.Parse("1998/04/17"));
        var studentYoung = new Student("Bob", DateTime.Parse("2015/04/17"));
        Console.WriteLine("isAdult: " + studentOld.DateOfBirth.IsOlderThen(adult));
        Console.WriteLine("isAdult: " + studentYoung.DateOfBirth.IsOlderThen(adult));
    }
}

最新更新