我有一個對象類型變量(控制.TAG),我需要轉換爲結構化類型,並更改成員這是一個人爲的,但代表性的例子:如何在VB.NET中進行C風格的投射?
Public Structure struct_COLOURS
Dim ILikeRed as boolean
Dim ILikeGreen as boolean
End Structure
Dim AnObject as Object = (some source that is struct_COLOURS)
DirectCast(AnObject, struct_COLOURS).ILikeRed = True ' This is not valid syntax?!
我不記得我C語法非常好,但它會是這樣的:
(struct_COLOURS*)AnObject->ILikeRed = true;
的一點是,我可以在所得鑄造對象轉換的東西,並設置成員。看起來好像DirectCast實際上是一個函數,並沒有按照我解釋它的方式進行投射。
奇怪的是,如果你只是想找回一個成員的值,可以使用DirectCast:
dim YummyRed AS Boolean = DirectCast(AnObject, struct_COLOURS).ILikeRed
就好了!
如果我不能按我想要的方式施放,並且我無法更改使用Tag屬性(所以請不要暗示,這不是一種選擇)來存儲這些結構,設置成員的最快方法是什麼?
我該如何在那裏放置那些沒有裝箱但結構化的東西? –
好的。如何將所有結構存儲在單獨的類型數組中,並且標記只包含索引?這種關係對於控件的生命週期是一致的。我需要更改很多代碼,但將數據從標籤對象中移出是一個長期目標,無論如何,我現在都不想解決這個問題。 –
@Mark Value類型在存儲在「Object」中時總是* boxed,這是沒有辦法的。對於您的情況,將索引存儲到全局數組可能是一個可接受的解決方案。 –