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

我应该使用new Type()还是只使用Type()来调用构造函数

  •  12
  • elmattic  · 技术社区  · 15 年前

    两种语法都是等价的(至少我认为是这样)。

    let o1 = new Object()
    

    let o2 = Object()
    

    你更常用哪种方法?可读性问题呢?

    3 回复  |  直到 15 年前
        1
  •  18
  •   kvb    15 年前

    我觉得省略“new”更实用,所以这是我的偏好。我喜欢您可以像对待任何其他返回类型实例的函数一样对待构造函数。

        2
  •  12
  •   luksan    11 年前

    我支持kvb的说法。此外,我省略了 new

    DateTime(2012, 12, 21).ToString()
    

    工作并导致编译器错误:

    new DateTime(2012, 12, 21).ToString()
    

    (new DateTime(2012, 12, 21)).ToString()
    

    我不喜欢额外的括号,所以我避免使用 新的 现在。

    一例 当我创建一个实现 IDisposable . 这是因为如果我省略了 在创建 可识别 F#编译器发出警告:

    let writeFile =
        let writer = StreamWriter(@"hello.txt")
        writer.WriteLine("hello")
    

    结果如下:

    警告FS0760:建议支持 “Type(args)”表示资源可能由生成的

    我可以通过添加 新的 关键词:

    let writeFile =
        let writer = new StreamWriter("hello.txt")
        writer.WriteLine("hello")
    

    这个警告也让我意识到我真的应该有一个 use 可识别 :

    let writeFile =
        use writer = new StreamWriter("hello.txt")
        writer.WriteLine("hello")
    

    新的 那我就永远不会得到提醒我正在和一个 可识别 !!!

    它还可以减少键入的次数。;-)

        3
  •  11
  •   Brian    15 年前

    我更喜欢使用“new”,除了我在其他语言中习惯使用它之外,没有什么好的理由,而且它使查找构造函数调用的dstr/grep变得更容易(缺少在解决方案中“查找所有引用”的智能工具)。