ICSharpCode.NRefactory.CSharp.Resolver.CSharpResolver.ResolveSizeOf C# (CSharp) Method

ResolveSizeOf() public method

Resolves 'sizeof(type)'.
public ResolveSizeOf ( IType type ) : ResolveResult
type IType
return ResolveResult
		public ResolveResult ResolveSizeOf(IType type)
		{
			IType int32 = compilation.FindType(KnownTypeCode.Int32);
			int? size = null;
			var typeForConstant = (type.Kind == TypeKind.Enum) ? type.GetDefinition().EnumUnderlyingType : type;

			switch (ReflectionHelper.GetTypeCode(typeForConstant)) {
				case TypeCode.Boolean:
				case TypeCode.SByte:
				case TypeCode.Byte:
					size = 1;
					break;
				case TypeCode.Char:
				case TypeCode.Int16:
				case TypeCode.UInt16:
					size = 2;
					break;
				case TypeCode.Int32:
				case TypeCode.UInt32:
				case TypeCode.Single:
					size = 4;
					break;
				case TypeCode.Int64:
				case TypeCode.UInt64:
				case TypeCode.Double:
					size = 8;
					break;
			}
			return new SizeOfResolveResult(int32, type, size);
		}
		#endregion

Usage Example

Example #1
0
		public override ResolveResult Resolve(CSharpResolver resolver)
		{
			return resolver.ResolveSizeOf(type.Resolve(resolver.CurrentTypeResolveContext));
		}
CSharpResolver