public unsafe void Clear() { VarEnum variantType = this.VariantType; if ((variantType & VarEnum.VT_BYREF) != VarEnum.VT_EMPTY) { this.VariantType = VarEnum.VT_EMPTY; } else if ((variantType & VarEnum.VT_ARRAY) != VarEnum.VT_EMPTY || variantType == VarEnum.VT_BSTR || (variantType == VarEnum.VT_UNKNOWN || variantType == VarEnum.VT_DISPATCH) || (variantType == VarEnum.VT_VARIANT || variantType == VarEnum.VT_RECORD || variantType == VarEnum.VT_VARIANT)) { fixed(Variant *variantPtr = &this) NativeMethods.VariantClear((IntPtr)((void *)variantPtr)); } else { this.VariantType = VarEnum.VT_EMPTY; } }
// Token: 0x0600621B RID: 25115 RVA: 0x0014DDA4 File Offset: 0x0014BFA4 public unsafe void Clear() { VarEnum variantType = this.VariantType; if ((variantType & VarEnum.VT_BYREF) != VarEnum.VT_EMPTY) { this.VariantType = VarEnum.VT_EMPTY; return; } if ((variantType & VarEnum.VT_ARRAY) != VarEnum.VT_EMPTY || variantType == VarEnum.VT_BSTR || variantType == VarEnum.VT_UNKNOWN || variantType == VarEnum.VT_DISPATCH || variantType == VarEnum.VT_VARIANT || variantType == VarEnum.VT_RECORD || variantType == VarEnum.VT_VARIANT) { fixed(IntPtr *ptr = (IntPtr *)(&this)) { NativeMethods.VariantClear((IntPtr)((void *)ptr)); } return; } this.VariantType = VarEnum.VT_EMPTY; }
public unsafe void Clear() { VarEnum variantType = this.VariantType; if ((variantType & VarEnum.VT_BYREF) != VarEnum.VT_EMPTY) { this.VariantType = VarEnum.VT_EMPTY; } else if (((((variantType & VarEnum.VT_ARRAY) != VarEnum.VT_EMPTY) || (variantType == VarEnum.VT_BSTR)) || ((variantType == VarEnum.VT_UNKNOWN) || (variantType == VarEnum.VT_DISPATCH))) || ((variantType == VarEnum.VT_VARIANT) || (variantType == VarEnum.VT_RECORD))) { fixed(IntPtr *ptrRef = ((IntPtr *)this)) { NativeMethods.VariantClear((IntPtr)ptrRef); } } else { this.VariantType = VarEnum.VT_EMPTY; } }
/// <summary> /// Release any unmanaged memory associated with the Variant /// </summary> /// <returns></returns> public void Clear() { // We do not need to call OLE32's VariantClear for primitive types or ByRefs // to safe ourselves the cost of interop transition. // ByRef indicates the memory is not owned by the VARIANT itself while // primitive types do not have any resources to free up. // Hence, only safearrays, BSTRs, interfaces and user types are // handled differently. VarEnum vt = VariantType; if ((vt & VarEnum.VT_BYREF) != 0) { VariantType = VarEnum.VT_EMPTY; } else if ( ((vt & VarEnum.VT_ARRAY) != 0) || ((vt) == VarEnum.VT_BSTR) || ((vt) == VarEnum.VT_UNKNOWN) || ((vt) == VarEnum.VT_DISPATCH) || ((vt) == VarEnum.VT_VARIANT) || ((vt) == VarEnum.VT_RECORD) || ((vt) == VarEnum.VT_VARIANT) ) { unsafe { fixed(void *pThis = &this) { NativeMethods.VariantClear((IntPtr)pThis); } } BCLDebug.Assert(IsEmpty, "variant"); } else { VariantType = VarEnum.VT_EMPTY; } }