<PackageReference Include="Microsoft.CSharp" Version="4.5.0" />

ExprConstant

sealed class ExprConstant : ExprWithType
using System; namespace Microsoft.CSharp.RuntimeBinder.Semantics { internal sealed class ExprConstant : ExprWithType { public Expr OptionalConstructorCall { get; set; } public bool IsZero => Val.IsZero(base.Type.ConstValKind); public ConstVal Val { get; } public ulong UInt64Value => Val.UInt64Val; public long Int64Value { get { FUNDTYPE fundamentalType = base.Type.FundamentalType; ConstVal val; if (fundamentalType == FUNDTYPE.FT_U4) { val = Val; return val.UInt32Val; } if ((uint)(fundamentalType - 7) <= 1) { val = Val; return val.Int64Val; } val = Val; return val.Int32Val; } } public override object Object { get { if (base.Type is NullType) return null; ConstVal val; object obj; switch (System.Type.GetTypeCode(base.Type.AssociatedSystemType)) { case TypeCode.Boolean: val = Val; obj = val.BooleanVal; break; case TypeCode.SByte: val = Val; obj = val.SByteVal; break; case TypeCode.Byte: val = Val; obj = val.ByteVal; break; case TypeCode.Int16: val = Val; obj = val.Int16Val; break; case TypeCode.UInt16: val = Val; obj = val.UInt16Val; break; case TypeCode.Int32: val = Val; obj = val.Int32Val; break; case TypeCode.UInt32: val = Val; obj = val.UInt32Val; break; case TypeCode.Int64: val = Val; obj = val.Int64Val; break; case TypeCode.UInt64: val = Val; obj = val.UInt64Val; break; case TypeCode.Single: val = Val; obj = val.SingleVal; break; case TypeCode.Double: val = Val; obj = val.DoubleVal; break; case TypeCode.Decimal: val = Val; obj = val.DecimalVal; break; case TypeCode.Char: val = Val; obj = val.CharVal; break; case TypeCode.String: val = Val; obj = val.StringVal; break; default: val = Val; obj = val.ObjectVal; break; } if (!base.Type.IsEnumType) return obj; return Enum.ToObject(base.Type.AssociatedSystemType, obj); } } public ExprConstant(CType type, ConstVal value) : base(ExpressionKind.Constant, type) { Val = value; } } }