2008-09-19 51 views
1

VB.NET有一個非常方便的「與」語句使用with語句的情況下,但它也可以讓你使用它的一位不願透露姓名的變量,就像這樣:VB.NET - 如何獲得在即時窗口

With New FancyClass() 
    .Level = "SuperSpiffy" 
    .Style = Slimming 
    .Execute() 
End With 

有沒有辦法讓「隱藏」的實例,所以我可以在立即窗口中查看它的屬性?我懷疑我會在監視窗口中看到它,所以直接就很好。

如果您嘗試訪問該實例以同樣的方式(比如說,當.Execute()拋出異常)從即時窗口,你會得到一個錯誤:

? .Style 
'With' contexts and statements are not valid in debug windows. 

是否有可用於獲取任何伎倆這個,還是我必須將代碼轉換爲另一種風格?如果With的功能更像Using語句(例如「With v = New FancyClass()」),這不會造成問題。

我知道With如何工作,有什麼替代方案,編譯器做什麼等等。我只是想知道這是否可能。

回答

1

答案如下,簡單的答案是「否」。

但是,不是另一種方式來做到這一點:而不是聲明,然後清理變量是使用「使用」。

Using fc as new FancyClass() 
    With fc  
    .Level = "SuperSpiffy"  
    .Style = Slimming  
    .Execute() 
    End With 
End Using 

然後你就可以在即時窗口中使用FC和不必記得寫

fc=nothing 

線。

只是一些關於它更多的想法;)

1

在一行上定義一個變量並在下一個語句中使用它會出現什麼問題?我意識到它使變量活得更長,但是所以令人震驚?

Dim x = new SomethingOrOther() 
With x 
    .DoSomething() 
End With 
x = Nothing ' for the memory conscious 

兩個額外的線路不會殺了你=)

編輯:如果你只是尋找一個是/否,我不得不說:號

+0

謝謝,但我其實需要一個問題的答案。我知道如何聲明變量,以及從編譯器的角度來看,具體如何使用with語句功能。 – 2008-09-20 07:18:24

+0

已修改。不,沒有語法可以抓住「。」在其自己的。 – Oli 2008-09-21 11:38:19

0

你創造一個變量 - 在第一種情況下(你的例子),編譯器正在創建一個你不被允許的隱式變量,而在第二種情況下(Oli的另一個答案),你將創建顯式變量。

如果你明確地創建它,你可以在直接窗口中使用它,並且當你完成它的時候你可以明確地銷燬它(我是一個有記憶意識的,我猜!),而不是離開那些清理魔法過程的細節。我不認爲有任何方法可以在即時窗口中獲得隱式變量。 (並且我也不相信神奇的過程,因爲這個原因,我從不使用多點記號或隱式變量)

1

我希望是不是真的有一種方式來獲得它,因爲簡單的答案是「不」,我還沒有找到一種方法尚未要麼。無論哪種方式,迄今爲止沒有任何說法真的有一個理由爲「不」,只是沒有人有=)這只是你認爲vb調試團隊將投入的那些東西之一,考慮經典「with」是如何=)

不管怎樣,我都知道usings和IDisposable的,我知道如何修復的代碼,因爲有些人會稱呼它,但我可能不會總是希望。

至於使用,我不喜歡在我的課上實現IDisposable只是爲了獲得一點糖。

我們真正需要的是「With var = New FancyClass()」,但這可能只是令人困惑!