c# - C#中的对象实例化之间的区别:将对象存储在引用中与直接调用方法

标签 c# syntax objectinstantiation

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

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


或者我可以这样做

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


结果是相同的,但是,这些声明之间是否存在差异? (没有语法)

谢谢。

最佳答案

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

两者之间没有实际的区别:都是关于可读性和您自己的编码风格的。

我要补充一点,在少数情况下,您需要声明对某些对象的引用:这些对象为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


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

关于c# - C#中的对象实例化之间的区别:将对象存储在引用中与直接调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23515418/

相关文章:

c# - 使下拉列表相互依赖

c# - 在 C# 中列出类似于 C++ 中的 vector.reserve(n) 的内容

php - 这包括路径语法的含义

c# - C#中 "yield"关键字有什么用?

C++ 实例化 "Implicit"类对象

c# - 最高效的数据存储

c# - 网络核心 : Convert String to TagBuilder

java - 在java api上编写mongodb语法

c# - 如何删除 Excel 电子表格中的所有网格线,除了我在清除所有网格线后明确添加的网格线?

java - 非实例化类中的静态变量是否会通过调用 Toolkit 来初始化?