我刚刚发现像C#一样,VB.NET也有using关键字.
到现在为止,我认为它没有它(愚蠢的我,我知道......)并做了这样的事情:
With New OleDbConnection(MyConnectionString)
' Do stuff
End With
Run Code Online (Sandbox Code Playgroud)
与使用这样的using语句相比,这有什么影响
Using cn as New OleDBConnection(MyConnectionString)
With cn
' Do stuff with cn
End With
End using
Run Code Online (Sandbox Code Playgroud)
更新:
我应该补充一点,我熟悉using语句的作用,因为它在退出构造时处理了对象.
但是,据我所知,With New ...构造将使对象在对象超出范围时将其标记为垃圾收集.
所以我的问题是,唯一的区别在于using我将立即释放内存,而对于With构造,只要GC感觉它就会被释放吗?或者我错过了更大的东西?
是否有最佳实践意义?我应该去重写所有的代码我用With New MyDisposableObject() ... End With的Using o as New MyDisposableObject()?
我不完全确定C#的作用是什么,所以我没有运气搜索VB.Net等效语法(如果它存在,我怀疑它可能没有).
在c#中,您可以这样做:
public void DoSomething() {
new MyHelper().DoIt(); // works just fine
}
Run Code Online (Sandbox Code Playgroud)
但据我所知,在VB.Net中,您必须将辅助对象分配给局部变量,否则您只会收到语法错误:
Public Sub DoSomething()
New MyHelper().DoIt() ' won't compile
End Sub
Run Code Online (Sandbox Code Playgroud)
这是我每天都在混合语言项目中遇到的好奇心之一 - 通常有一个VB.Net等价物,它使用的语法不那么明显.任何人?