代码之家  ›  专栏  ›  技术社区  ›  ThePenguin

当你不知道将为哪个变量传递哪些参数时,如何设置构造函数[重复]

c#
  •  -1
  • ThePenguin  · 技术社区  · 1 年前

    在我的课堂上,我有一些设置;让我们称之为: setting1 , setting2 , setting3 我想通过一个论点 设置1 设置3 在构造函数中不进行修改 设置2 或者将这三个作为论点。

    我曾见过有人使用字典读取密钥,然后根据值更改设置,但我想知道是否有更好的方法来做到这一点。

    1 回复  |  直到 1 年前
        1
  •  -1
  •   Konstantin Makarov    1 年前
    Class c1 = new(setting1: "AA", setting3: "CC");
    Class c2 = new(setting2: "BB");
    
    class Class(
        string setting1 = "A",
        string setting2 = "B",
        string setting3 = "C")
    {
        public string setting1 = setting1;
        public string setting2 = setting2;
        public string setting3 = setting3;
    }
    

    如果设置是类:

    Class c1 = new(setting1: new("AA"), setting3: new("CC"));
    Class c2 = new(setting2: new("BB"));
    
    class Class(
        Setting1 setting1 = default!,
        Setting2 setting2 = default!,
        Setting3 setting3 = default!)
    {
        public Setting1 setting1 = setting1 ?? Setting1.Default;
        public Setting2 setting2 = setting2 ?? Setting2.Default;
        public Setting3 setting3 = setting3 ?? Setting3.Default;
    }
    
    class Setting1(string s1)
    {
        public string s1 = s1;
        public static readonly Setting1 Default = new("A");
    }
    
    class Setting2(string s2)
    {
        public string s2 = s2;
        public static readonly Setting2 Default = new("B");
    }
    
    class Setting3(string s3)
    {
        public string s3 = s3;
        public static readonly Setting3 Default = new("C");
    }