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));
}
}