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) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。