2013-10-28 45 views
-6

我知道什么是var(匿名)关键字,以及如何使用以及我们主要使用此关键字(LINQ-我们不知道函数的确切返回值,我们可以使用var关键字)。var关键字是否解决了内存泄漏问题?

我知道这两行之间没有区别,我的疑问是var关键字解决了内存泄漏问题?

例如:

C#:

Window window=new Window(); 
var window=new Window(); 
+7

这些代码行之间没有区别。他们编译到相同的事情。 “var”对内存消耗没有影响 - 它只是类型名称的快捷方式。 – pattermeister

+0

这个网站有很多关于'var'使用的问题。请先做一些研究。 –

+1

如果两行代码之间没有区别,那么怎么可能解决“内存泄漏问题”(在你的问题中你实际上没有描述过)?你的问题目前还不能解答。 –

回答

4

首先,var匿名关键字。代码中没有显示任何匿名。其次,如果你“知道这两行之间没有区别”,你为什么会怀疑它会改变任何内存泄漏?不,不是。不,在这里可能没有“内存泄漏”。

检查Window是否执行IDisposable。如果是这样,和如果您的window使用仅限于局部范围,然后使用using(这将有助于确保资源都及时释放,而不是等待垃圾回收器):

using(var window=new Window()) { 
    // NOT SHOWN: configure it, display it (modally), read the final values, etc 
} 

在上面,var纯粹是一个方便,以避免我需要在一行上键入“窗口”三次。

1

var关键字可以与匿名类型一起使用,并可用于类型推断(变量的类型可由编译器推断)。这两条线路编译完全相同的IL代码:

Window window=new Window(); 
var window=new Window(); 

我不清楚你指的是什么样的内存泄漏问题,但一个人不能没有造成其他这样做太内存泄漏。