你能告诉我如何解决这个错误吗
Default parameter value must be a compile-time constant"
我知道这个问题,并且已经在 Stack Overflow 上看到了方法的解决方案,但我不知道如何为类解决这个问题。
public class member
{
public string name { get; }
public string email { get; set; }
public int entryYear;
static int memberNbr;
public member (string _name, int _entryyear = DateTime.Now.Year, string _email = "")
{
name = _name;
entryyear = _entryyear;
email = _email;
}
}
最佳答案
与其将其作为可选参数,不如使用不同的构造函数重载呢?在第二个构造函数中,不要将 entryYear 作为参数,而是在构造函数体内初始化它?
当我们这样做的时候,让我们使用适当的 C# 约定,例如属性名称是 PascalCase 和构造函数参数是 camelCased。并且不使用属性名称的缩写,并且当 MemberNumber 明显属于单个实例时不要将其设为静态。
public class Member
{
public string Name { get; }
public string Email { get; }
public int EntryYear { get; }
public int MemberNumber {get; }
public Member(string name, int entryYear, string email = "")
{
Mame = Name;
EntryYear = entryYear;
Email = email;
}
public Member(string name, string email = "")
{
Mame = Name;
EntryYear = DateTime.Now.Year;
Email = email;
}
}
你没有问过,但用空字符串初始化电子邮件真的没有意义。最好将其默认为 null。
关于c# - 如何使用 DateTime.Now.Year 作为可选参数的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53573803/