C# 如何将datetime参数传递给条件方法?

C# 如何将datetime参数传递给条件方法?,c#,datetime,C#,Datetime,我在学习面向对象编程。我有一个类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(

我在学习面向对象编程。我有一个类
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");
}
现在我想从main传出生日期,但我不知道怎么做。以下是我的主要观点(它有错误,我不知道如何解决):


您需要为
DateTime
使用适当的构造函数参数。上面列出了很多

你可以从这个开始

new DateTime(2010,02,23)

首先也是最重要的一点是,您的
属性是错误的。其思想是通过公共属性公开私有字段的值,而不是反过来:

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年。同样,您拥有的可能符合您的要求。

仅举一个如何解决此问题的示例:

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));
    }
}
newdatetime(2010年2月23日)
=>这应该是
newdatetime(2010年2月23日)
DateTime.ParseExact(“2010年2月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));
    }
}