Variant 结构

表示可被解释为多种类型的对象。

此 API 不兼容 CLS。 兼容 CLS 的替代 API 为 [None]。

命名空间:  Microsoft.VisualStudio.Package
程序集:   Microsoft.VisualStudio.Package.LanguageService.9.0(在 Microsoft.VisualStudio.Package.LanguageService.9.0.dll 中)
  Microsoft.VisualStudio.Package.LanguageService.11.0(在 Microsoft.VisualStudio.Package.LanguageService.11.0.dll 中)
  Microsoft.VisualStudio.Package.LanguageService(在 Microsoft.VisualStudio.Package.LanguageService.dll 中)
  Microsoft.VisualStudio.Package.LanguageService.10.0(在 Microsoft.VisualStudio.Package.LanguageService.10.0.dll 中)

语法

声明
<CLSCompliantAttribute(False)> _
Public Structure Variant
[CLSCompliantAttribute(false)]
public struct Variant

Variant 类型公开以下成员。

属性

  名称 说明
公共属性 Value 确定此 Variant 对象的值。
公共属性 Vt 确定 Variant 对象的类型。

页首

方法

  名称 说明
公共方法 Equals 指示此实例与指定对象是否相等。 (继承自 ValueType。)
公共方法 GetHashCode 返回此实例的哈希代码。 (继承自 ValueType。)
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
公共方法 ToChar ,如果该不同的类型是 VT_UI2,解释 Variant 对象的值作为 Unicode 字符。
公共方法 ToString 返回该实例的完全限定类型名。 (继承自 ValueType。)
公共方法静态成员 ToVariant 转换为 Variant 类对象的特定不同的对象。

页首

备注

不同的框架此版本的特定于托管包 framework (MPF) 语言服务类和设计主要将变量转换为字符。具体而言,因此,如果该变量具有该类型 VT_UI2,不同的对象转换为字符。

此机制用于 MPF 语言服务类的一个位置, ViewFilter 类的 HandlePreExec 方法才有效。,如果命令的类型是 TYPECHAR,此机制用于转换传入的变量转换为字符。

对实现者的说明

这是有限结构,并没有与重写。

对调用者的说明

这是结构,可以将一个变量类型。它会限制了一个函数,主要通过编程方式从不同的对象转换为字符。

示例

此示例演示 MPF ViewFilter 类如何使用此 Variant 结构转换为的字符传入不同的对象。

namespace Microsoft.VisualStudio.Package
{
    [CLSCompliant(false)]
    [System.Runtime.InteropServices.ComVisible(true)]
    public class ViewFilter 
        : IVsTextViewFilter
        , IVsTextViewEvents
        , IOleCommandTarget
        , IDisposable
    {
        public virtual void HandlePostExec(ref Guid guidCmdGroup,
                                           uint nCmdId,
                                           uint nCmdexecopt,
                                           IntPtr pvaIn,
                                           IntPtr pvaOut)
        { 

            if (guidCmdGroup == VsMenus.guidStandardCommandSet2K) {
                VsCommands2K cmd = (VsCommands2K)nCmdId;
                char ch = '\0';
                if (cmd == VsCommands2K.TYPECHAR && pvaIn != IntPtr.Zero) {
                    Variant v = Variant.ToVariant(pvaIn);
                    ch = v.ToChar();

                    // Do something with the character

                }
            }
        }
    }
}

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

请参见

参考

Microsoft.VisualStudio.Package 命名空间