VB中 variant與object區別?

2021-07-24 13:57:38 字數 800 閱讀 1868

variant是不定型別,或者說可變型別,是一種「萬金油」變數,你給它賦值哪種型別的資料,它就會自動變為哪種型別,比如說賦值1234,它就是integer型,賦值12.34,它就是double型。

object是物件,是vb中各種控制項、元件等的泛稱,是類的例項。依上所述,當你給乙個variant變數賦值為物件時,這個變數也自動變為object。所以從表面上看兩者似乎差不多,但事實上是有本質區別的。

不提倡用variant來宣告變數,因為它要用額外的記憶體位元組來記錄變數的實際型別,不但會造成資源的浪費,也會降低程式的執行效率。應該宣告為具體的變數型別,比如integer、long、single、double、date等等。

同樣,也不提倡用object來宣告物件變數,而應該是具體的物件型別,如textbox、commandbutton、combobox等

variant 資料型別是所有沒被顯式宣告(用如 dim、private、public 或 static等語句)為其他型別變數的資料型別。variant 資料型別並沒有型別宣告字元。

variant 是一種特殊的資料型別,除了定長 string 資料及使用者定義型別外,可以包含任何種類的資料。variant 也可以包含 empty、error、nothing 及 null等特殊值。可以用 vartype 函式或 typename 函式來決定如何處理 variant 中的數。

object 可以代表vb中的任何乙個物件。 在某些情況下你在**中要對一些並不是事先就能夠確定型別的物件進行操作就可以用object物件。例如,要遍歷乙個窗體上的所有控制項,並顯示出這些控制項的名稱就要用到object物件了。

Variant 與 記憶體洩露

今天遇到乙個記憶體洩露的問題。是師兄檢測出來的。variant型別在使用後要clear否則會造成記憶體洩露,為什麼呢?google一下找到下面一篇文章,主要介紹了com的記憶體洩露,中間有對variant的一些解釋吧。1.引用計數洩漏 由於c 的一些物件生命週期難以管理,在com中加入了引用計數,用...

Variant 與 記憶體洩露

今天遇到乙個記憶體洩露的問題。是師兄檢測出來的。variant型別在使用後要clear否則會造成記憶體洩露,為什麼呢?google一下找到下面一篇文章,主要介紹了com的記憶體洩露,中間有對variant的一些解釋吧。1.引用計數洩漏 由於c 的一些物件生命週期難以管理,在com中加入了引用計數,用...

pandas入門之string與object

1.轉換 pd.series 1 1.astype str astype string 2.拆分str.split s.str.split str 1 3.拼接str.cat 4.替換str.replace函式與正規表示式 需要賦值元素為缺失值 為object再轉回來 否則請使用str.replac...