Skip to content

Latest commit

 

History

History
47 lines (45 loc) · 2.91 KB

ii.23.1.16-element-types-used-in-signatures.md

File metadata and controls

47 lines (45 loc) · 2.91 KB

II.23.1.16 Element types used in signatures

The following table lists the values for ELEMENT_TYPE constants. These are used extensively in metadata signature blobs – see §II.23.2.

Name Value Remarks
ELEMENT_TYPE_END 0x00 Marks end of a list
ELEMENT_TYPE_VOID 0x01  
ELEMENT_TYPE_BOOLEAN 0x02  
ELEMENT_TYPE_CHAR 0x03  
ELEMENT_TYPE_I1 0x04  
ELEMENT_TYPE_U1 0x05  
ELEMENT_TYPE_I2 0x06  
ELEMENT_TYPE_U2 0x07  
ELEMENT_TYPE_I4 0x08  
ELEMENT_TYPE_U4 0x09  
ELEMENT_TYPE_I8 0x0a  
ELEMENT_TYPE_U8 0x0b  
ELEMENT_TYPE_R4 0x0c  
ELEMENT_TYPE_R8 0x0d  
ELEMENT_TYPE_STRING 0x0e  
ELEMENT_TYPE_PTR 0x0f Followed by type
ELEMENT_TYPE_BYREF 0x10 Followed by type
ELEMENT_TYPE_VALUETYPE 0x11 Followed by TypeDef or TypeRef token
ELEMENT_TYPE_CLASS 0x12 Followed by_ TypeDef_ or TypeRef token
ELEMENT_TYPE_VAR 0x13 Generic parameter in a generic type definition, represented as number (compressed unsigned integer)
ELEMENT_TYPE_ARRAY 0x14 type rank boundsCount bound1loCount lo1
ELEMENT_TYPE_GENERICINST 0x15 Generic type instantiation. Followed by type type-arg-count type-1type-n
ELEMENT_TYPE_TYPEDBYREF 0x16  
ELEMENT_TYPE_I 0x18 System.IntPtr
ELEMENT_TYPE_U 0x19 System.UIntPtr
ELEMENT_TYPE_FNPTR 0x1b Followed by full method signature
ELEMENT_TYPE_OBJECT 0x1c System.Object
ELEMENT_TYPE_SZARRAY 0x1d Single-dim array with 0 lower bound
ELEMENT_TYPE_MVAR 0x1e Generic parameter in a generic method definition, represented as number (compressed unsigned integer)
ELEMENT_TYPE_CMOD_REQD 0x1f Required modifier: followed by a TypeDef or TypeRef token
ELEMENT_TYPE_CMOD_OPT 0x20 Optional modifier: followed by a TypeDef or TypeRef token
ELEMENT_TYPE_INTERNAL 0x21 Implemented within the CLI
ELEMENT_TYPE_MODIFIER 0x40 Or'd with following element types
ELEMENT_TYPE_SENTINEL 0x41 Sentinel for vararg method signature
ELEMENT_TYPE_PINNED 0x45 Denotes a local variable that points at a pinned object
  0x50 Indicates an argument of type System.Type.
  0x51 Used in custom attributes to specify a boxed object (§II.23.3).
  0x52 Reserved
  0x53 Used in custom attributes to indicate a FIELDII.22.10, II.23.3).
  0x54 Used in custom attributes to indicate a PROPERTYII.22.10, II.23.3).
  0x55 Used in custom attributes to specify an enum (§II.23.3).