1

我对 c# 中的对象声明有疑问。我用这个例子解释我可以这样做:

MyObject obj = New MyObject(); 
int a = obj.getInt();

或者我可以这样做

int a = new MyObject().getInt();

结果是一样的,但是,这个声明之间是否存在任何差异?(没有语法)

谢谢。

4

3 回答 3

4

这不是声明:它是类实例化。

没有实际的区别:一切都与可读性和您自己的编码风格有关。

我要补充一点,在少数情况下您需要声明对某个对象的引用:当这些对象是IDisposable.

例如:

// WRONG! Underlying stream may still be locked after reading to the end....
new StreamReader(...).ReadToEnd(); 

// OK! Store the whole instance in a reference so you can dispose it when you 
// don't need it anymore.
using(StreamReader r = new StreamReader(...))
{

} // This will call r.Dispose() automatically

正如一些评论所添加的那样,在很多极端情况下,实例化一个类并将对象存储在一个引用(一个变量)中会更好/最优,但是对于您的简单示例,我相信差异还不够,并且它仍然是编码风格/可读性问题

于 2014-05-07T10:38:04.410 回答
3

它主要是语法。

主要区别在于您不能在第二个示例中使用 MyObject 的实例。此外,它可能会立即被提名为垃圾收集。

于 2014-05-07T10:38:50.340 回答
1

不,从技术上讲,它们是相同的。

在这种情况下我建议考虑的唯一事情,好像该函数实际上不需要创建实例,您可以考虑将其声明为静态,因此您可以简单地调用它:

int a = MyObject.getInt();

但这自然取决于具体的实现。

于 2014-05-07T10:37:55.823 回答