哪一个最好接近以下?或两者都有相同的效果?
Dim carrierName As String
Dim someotherName As String
Dim anotherOne As String
Using oDa As New MyCompany.DataAccess.MyModule
carrierName = oDa.GetCarrierName(itemNumber)
End Using
Using oDa As New MyCompany.DataAccess.MyModule
someotherName = oDa.GetSomeOtherName(itemNumber,1)
End Using
Using oDa As New MyCompany.DataAccess.MyModule
anotherOne = oDa.GetAnotherName("somevalue")
End Using
OR
Using oDa As New MyCompany.DataAccess.MyModule
carrierName = oDa.GetCarrierName(itemNumber)
someotherName = oDa.GetSomeOtherName(itemNumber,1)
anotherOne = oDa.GetAnotherName("somevalue")
End Using
答案 0 :(得分:3)
好吧,一个版本将创建三个MyModule
个实例,另一个版本只会创建一个。如果不了解更多关于MyModule
的信息,我们无法分辨出差异。
第二种方法对我来说看起来更干净,但是如果不知道语义差异,很难说它肯定更好。
答案 1 :(得分:0)
首先,您要创建和处理MyModule的 3 实例,而在第二个实例中,您只创建和处理 1 实例。所以第二种方法更好。它也更清洁,更直接。
答案 2 :(得分:0)
这两种方法在本质上是不同的,但最终结果取决于你的MyModule实现。
第二个似乎更好,因为它只创建和管理一个MyModule对象,特别是如果创建和处置MyModule成本很高。
如果MyModule不允许具有相同实例的多个请求,则可能需要第一个。但如果它是cas。下摆......对我来说这看起来像个小虫。
答案 3 :(得分:0)
后者在大多数情况下更好。使用只是
的快捷方式var oDa = new MyCompany.DataAccess.MyModule();
try {
carrierName = oDa.GetCarrierName(itemNumber)
someotherName = oDa.GetSomeOtherName(itemNumber,1)
anotherOne = oDa.GetAnotherName("somevalue")
}
finally {
oDa.Dispose();
}
当每个方法分配大量需要立即清理的内存时,可以使用第一种方法,但我不认为这是你的情况。
顺便说一下:你似乎误将c#与visual basic
混淆了