VarEnum 枚举

定义

注意

Marshalling VARIANTs may be unavailable in future releases.

指示当数组作为 SafeArray 从托管代码封送到非托管代码时,如何封送该数组的元素。

C#
[System.Obsolete("Marshalling VARIANTs may be unavailable in future releases.")]
public enum VarEnum
C#
public enum VarEnum
C#
[System.Serializable]
public enum VarEnum
C#
[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

指示类 ID。

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

指示空值(类似于 SQL 中的空值)。

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

指示 VARIANTfar 指针。

VT_VECTOR 4096

指示简单的已计数数组。

VT_VOID 24

指示 C 样式 void

示例

C#
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)

另请参阅