c#:使用new创建对象,但不赋值.好主意/坏主意

本文关键字:好主意 赋值 使用 new 创建对象 | 更新日期: 2023-09-27 18:06:01

我想知道使用新操作符创建对象但不将返回的对象分配给任何变量是否是个好主意。本质上,我只是在同一行调用这些方法。如:

new Object().ToString();

好吧,我知道上面的行不会做任何事情,但它只是一个例子。下面是我的实际代码行(它是特定于selenium的——这就是为什么我给出上面的例子)

new SelectElement(driver.FindElement(By.Id("fUserCountryID"))).SelectByText("United States");

它的作用:在表单中找到一个ID=fUserCountryID的HTML元素,然后选择value=United States的选项

编译器允许我这样做,它工作得很好,但这是一个很好的编程实践吗?请分享你的专家意见,因为我只是一个初学者。:)

c#:使用new创建对象,但不赋值.好主意/坏主意

如果这是你想问的,这不是一个糟糕的编程实践。如果您没有理由在该行之后保留对新创建对象的引用,那么这完全没问题。

当然可以接受。

如果你真的不需要这个对象做其他事情,那么就没有必要存储它。保存可能会使调试更容易一些。

但是请注意,不存储它也没有真正的好处。

这在当今"流畅接口"类型的对象模型设计中非常常见。如果你不需要引用,而不是链式调用方法或类似的东西,那么就没有必要保留它。在我看来,这种方法并没有错。

你应该谨慎使用这个,但我不认为你上面的代码有什么问题。

我总喜欢问自己几个问题——

  1. 它使你的代码更易于阅读吗?
  2. 我将来可能不会再碰这些代码了——其他开发人员会对此感到困惑吗?

只是要小心一些对象,例如,可能实现IDisposable。最佳实践是将它们包装在using { ... }块中,以便显式地清理它们的资源。

如果您只使用对象一次,那么无论您正在做什么都是完全好的。但是,如果您打算继续使用对象并每次使用时都创建对象,这是一个不好的实践。但对于你的例子,这是罚款。

如果一个对象在代码的其他地方没有任何用途,那么最好不要创建那些即使不需要也留在内存中的对象。