c# - 如何使用 DateTime.Now.Year 作为可选参数的默认值

标签 c# class optional-parameters

你能告诉我如何解决这个错误吗

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/

相关文章:

c# - 找出哪个类调用了一个方法

Javascript继承,成员未定义

c++ - 为什么我不能将类构造函数参数设置为默认值?

java - 有多个可选参数

swift - 如何快速创建一个可选的闭包?

c# - 从 ListView 控件中获取值(value)

c# - 如何在 C# 中应用重命名方法来更改带有 get/set 的名称?

c# - 在c#中自动从上到下滚动 ListView

c# - 可选参数

c# - 为什么要断开与数据库的连接?