代码之家  ›  专栏  ›  技术社区  ›  Daniel MoÅ¡mondor

为什么要麻烦初始值设定项?(.net)

  •  5
  • Daniel MoÅ¡mondor  · 技术社区  · 15 年前

    我有这个:

    AudioPlayer player = new AudioPlayer();
    player.Directory = vc.Directory;
    player.StartTime = vc.StarTime;
    player.EndTime = vc.EndTime;
    

    但我可以得到:

    AudioPlayer player = new AudioPlayer
    {
        Directory = vc.Directory,
        StartTime = vc.StarTime,
        EndTime = vc.EndTime
    };
    

    如果我改为“新的写作方式”,除了不可读性,我还能得到什么?它会使我更接近lambda函数(=>)?

    这和什么有关吗 RAII ?

    添加:

    有些人回答说,在仅设置目录属性之后,正常初始化可能会使对象处于“无效”状态-我的观察是,设计对象的人可能设计的方式是,只有必须真正输入的值是通过真正的构造函数输入的,而所有其他的都可以自由地迟些。

    6 回复  |  直到 15 年前
        1
  •  2
  •   svick Raja Nadar    15 年前

    AudioPlayer player = new AudioPlayer();
    player.Directory = vc.Directory;
    player.StartTime = vc.StarTime;
    player.EndTime = vc.EndTime;
    some.Method(player);
    

    some.Method(
      new AudioPlayer
      {
          Directory = vc.Directory,
          StartTime = vc.StarTime,
          EndTime = vc.EndTime
      });
    

        2
  •  10
  •   Steven    15 年前

    var player = new AudioPlayer
    {
        Car = new Car()
        {
            WheelSize = new Inch(21),
            Driver = new Person()
            {
                Age = 53,
                Type = LicenseType.B,
                Family =
                {
                    new Person("Jane"),
                    new Person("Pieter"),
                    new Person("Anny")
                }
            }
        }
        Directory = vc.Directory,
        StartTime = vc.StarTime,
        EndTime = vc.EndTime
    };
    

        3
  •  2
  •   Jon Hanna    15 年前

        4
  •  2
  •   Richard Anthony Hein    15 年前

        5
  •  1
  •   tia    15 年前

    item => new Person() { Name = item.Name }

        6
  •  1
  •   Darin Dimitrov    15 年前

    var player = new AudioPlayer {

    推荐文章