我是OOP的新手,正在编写一个网球锦标赛计划,其中玩家拥有以下数据(我使Person类成为超类,因为我后来需要将一个裁判类与一些相同的实例变量连接起来)。当我尝试在我的SVM方法中创建一个新的播放器时,我无法创建,因为我的生日输入错误。当我尝试输入1981/09/26时,它说:“参数4:无法从'int'转换为System.DateTime'。
我该怎么做才能解决这个问题?其他输入如string和GenderType工作正常?
public class Person
{
public enum GenderType { Male, Female}
private string FName { get; set; }
private string MName { get; set; }
private string LName { get; set; }
private DateTime Birthdate { get; set; }
private string Nationality { get; set; }
private GenderType Gender { get; set; }
public Person(string fn, string mn, string ln, DateTime bd, string nation, GenderType g)
{
FName = fn;
MName = mn;
LName = ln;
Birthdate = bd;
Nationality = nation;
Gender = g;
}
public override string ToString(){ return "Firstname: " + FName + " Middlename: " + MName + " Lastname: " + LName + " Birthdate: " + Birthdate + " Nationality " + Nationality + " Gender: " + Gender;}}
public class Player : Person {
public Player(string fn, string mn, string ln, DateTime bd, string nation, GenderType g) : base(fn, mn, ln, bd, nation, g)
{
}
static void Main(string[] args)
{
var p1 = new Player("Serena", "J.", "Williams", 1981 / 09 / 26, "USA", GenderType.Female);
}
}
答案 0 :(得分:7)
因为您没有传递DateTime
类型的实例,而是直接传递文字,而编译器正在考虑类型为int
,但从代码中可以清楚地看到Birthdate
属性在您的DateTime
类中。
您需要创建一个DateTime
类型对象:
new Player("Serena", "J.", "Williams",new DateTime(1981,09,26),"USA", GenderType.Female);
DateTime
构造函数中第一个参数是年份,第二个参数是月份,第三个参数是月份中的日期。
以下是constructor正在使用它。
答案 1 :(得分:0)
var p1 = new Player(“Serena”,“J。”,“Williams”,new Datetime(1981,09,26),“USA”,GenderType.Female);
答案 2 :(得分:0)
您可以像这样设置日期时间:
static void Main(string[] args)
{
var p1 = new Player("Serena", "J.", "Williams", new DateTime (1981, 09, 26, 0, 0, 0), "USA", GenderType.Female);
}