VarEnum 列舉

定義

警告

Marshalling VARIANTs may be unavailable in future releases.

指示從 Managed 至 Unmanaged 程式碼封送處理陣列為 SafeArray 時如何封送處理陣列元素。

[System.Obsolete("Marshalling VARIANTs may be unavailable in future releases.")]
public enum VarEnum
public enum VarEnum
[System.Serializable]
public enum VarEnum
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum VarEnum
繼承
屬性

欄位

VT_ARRAY 8192

指示 SAFEARRAY 指標。

VT_BLOB 65

指示以長度為首碼的位元組。

VT_BLOB_OBJECT 70

指示 BLOB (二進位大型物件) 含有物件。

VT_BOOL 11

表示布林值。

VT_BSTR 8

表示 BSTR 字串。

VT_BYREF 16384

表示數值為參考。

VT_CARRAY 28

指示 C 樣式陣列。

VT_CF 71

指示剪貼簿格式。

VT_CLSID 72

表示類別識別碼。

VT_CY 6

表示貨幣值。

VT_DATE 7

表示 DATE 值。

VT_DECIMAL 14

指示 decimal 值。

VT_DISPATCH 9

指示 IDispatch 指標。

VT_EMPTY 0

表示尚未指定值。

VT_ERROR 10

表示 SCODE。

VT_FILETIME 64

指示 FILETIME 值。

VT_HRESULT 25

指示 HRESULT。

VT_I1 16

指示 char 值。

VT_I2 2

指示 short 整數。

VT_I4 3

指示 long 整數。

VT_I8 20

表示 64 位元整數。

VT_INT 22

指示整數值。

VT_LPSTR 30

指示以 null 結尾的字串。

VT_LPWSTR 31

指示以 null 結尾的寬字串。

VT_NULL 1

表示 null 值,和 SQL 中的 null 值類似。

VT_PTR 26

指示指標型別。

VT_R4 4

指示 float 值。

VT_R8 5

指示 double 值。

VT_RECORD 36

指示使用者定義的型別。

VT_SAFEARRAY 27

指示 SAFEARRAY。 在 VARIANT 中無效。

VT_STORAGE 67

指示儲存體遵循的名稱。

VT_STORED_OBJECT 69

指示儲存體含有物件。

VT_STREAM 66

指示資料流遵循的名稱。

VT_STREAMED_OBJECT 68

指示資料流含有物件。

VT_UI1 17

指示 byte

VT_UI2 18

表示 unsignedshort

VT_UI4 19

表示 unsignedlong

VT_UI8 21

表示 64 位元不帶正負號的整數。

VT_UINT 23

指示 unsigned 整數值。

VT_UNKNOWN 13

指示 IUnknown 指標。

VT_USERDEFINED 29

指示使用者定義的型別。

VT_VARIANT 12

指示 VARIANT far 指標。

VT_VECTOR 4096

指示簡單計數的陣列。

VT_VOID 24

指示 C 樣式 void

範例

using System;
using System.Runtime.InteropServices;

namespace MyModule
{
    // If you do not have a type library for an interface
    // you can redeclare it using ComImportAttribute.

    // This is how the interface would look in an idl file.

    //[
    //object,
    //uuid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26"),
    //dual,	helpstring("IMyStorage Interface"),
    //pointer_default(unique)
    //]
    //interface IMyStorage : IDispatch
    //{
    //	[id(1)]
    //	HRESULT GetItem([in] BSTR bstrName, [out, retval] IDispatch ** ppItem);
    //	[id(2)]
    //	HRESULT GetItems([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT)* pItems);
    //	[id(3)]
    //	HRESULT GetItemDescriptions([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT) ** ppItems);
    //	[id(4), propget]
    //	HRESULT get_IsEmpty([out, retval] BOOL * pfEmpty);
    //};

    // This is the managed declaration.

    [ComImport]
    [Guid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26")]
    public interface IMyStorage
    {
        [DispId(1)]
        [return: MarshalAs(UnmanagedType.Interface)]
        object GetItem([In, MarshalAs(UnmanagedType.BStr)] String bstrName);

        [DispId(2)]
        void GetItems([In, MarshalAs(UnmanagedType.BStr)] String bstrLocation,
            [Out, MarshalAs( UnmanagedType.SafeArray,
                      SafeArraySubType = VarEnum.VT_VARIANT )] out Object[] Items);

        [DispId(3)]
        void GetItemDescriptions([In] String bstrLocation,
            [In, Out, MarshalAs(UnmanagedType.SafeArray)] ref Object[] varDescriptions);

        bool IsEmpty
        {
            [DispId(4)]
            [return: MarshalAs(UnmanagedType.VariantBool)]
            get;
        }
    }
}

備註

搭配 System.Runtime.InteropServices.MarshalAsAttribute 使用 以明確控制的項目 SafeArray類型。

適用於

產品 版本 (已淘汰)
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9 (Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 2.0 (1.2, 1.3, 1.4, 1.5, 1.6, 2.1)
UWP (10.0)

另請參閱