在由于未实现Using
而无法使用的情况下,以下代码是否可以用于/ ?这会导致内存泄漏还是设置一个实例变量然后将其设置为空会更好?IDisposable
With
End With
With New System.IO.FileInfo(sFileName)
' Do some work
End With
在由于未实现Using
而无法使用的情况下,以下代码是否可以用于/ ?这会导致内存泄漏还是设置一个实例变量然后将其设置为空会更好?IDisposable
With
End With
With New System.IO.FileInfo(sFileName)
' Do some work
End With
With 关键字与 IDisposable 或 Using 关键字无关。这只是一个方便的捷径,可以避免输入对象引用的名称。
With New System.IO.FileInfo(sfilename)
Console.WriteLine(.Length) '' note the dot without an object reference
'' etc..
End With
这与以下内容相同:
Dim info = New System.IO.FileInfo(sfilename)
Console.WriteLine(info.Length)
'' etc..
由于 FileInfo 没有实现 IDisposable,否则您对 Using 没有任何用处。 请避免假设 With 负责处理 With 语句中使用的对象引用。它没有。确实有点道理,但是它存在 15 年以上的时间阻止了 VB.NET 团队如此显着地改变其行为。输入更少的代码只是一个捷径。在过去的“为什么 C# 没有 with 关键字”问题中非常重要。C# 早期的烫手山芋,但现在已经有一段时间了。
With
与内存或资源使用无关。这只是一个简写符号。
With
不仅仅是简写符号。如果根据 MSDN 在对象上设置大量属性可以稍微提高性能,“如果对象的限定路径很长,使用 With...End With 可以提高性能。” (请参阅http://msdn.microsoft.com/en-us/library/wc500chb.aspx上的备注)这样做的原因是 with 块只需获取一次对象引用,然后它会重用它每个后续调用的对象引用。如果每次运行时都必须多次获取对象引用时显式列出对象。这不是一个很大的区别,但在某些情况下它可能很重要。