【发布时间】:2018-12-01 18:26:25
【问题描述】:
你能告诉我如何解决这个错误
默认参数值必须是编译时常量"
我知道这个问题,并且已经在 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;
}
}
【问题讨论】:
-
您可以将其设为
int?,默认为null,然后如果它以null出现,则将该字段设置为您想要的非常数。 -
如果您真的必须这样做,请将您的方法签名设为
public member (string _name, int _entryyear = default(int), string _email = "")-_entryyear将默认为default(int)(即0),然后在方法里面你可以做entryYear = _entryyear == default(int) ? DateTime.Now.Year : _entryyear;。提供的答案是解决此问题的一种更简洁的方法。 -
感谢您的解决方案,但我在计算机科学研究的第一学期,不允许使用 int?
-
你真的不能用int?。这听起来像是一种非常奇怪的教学方法!如果你这样做会怎样?
-
刚才还不是讲座的题目,同学们改正了这个习题,看不懂,扣分。
标签: c# class optional-parameters