Boo.Lang.Compiler.Steps.EmitAssembly.EmitDefaultValue C# (CSharp) Метод

EmitDefaultValue() приватный Метод

private EmitDefaultValue ( IType type ) : void
type IType
Результат void
        void EmitDefaultValue(IType type)
        {
            var isGenericParameter = GenericsServices.IsGenericParameter(type);

            if (!type.IsValueType && !isGenericParameter)
                _il.Emit(OpCodes.Ldnull);
            else if (type == TypeSystemServices.BoolType)
                _il.Emit(OpCodes.Ldc_I4_0);
            else if (TypeSystemServices.IsFloatingPointNumber(type))
                EmitLoadLiteral(type, 0.0);
            else if (TypeSystemServices.IsPrimitiveNumber(type) || type == TypeSystemServices.CharType)
                EmitLoadLiteral(type, 0);
            else if (isGenericParameter && TypeSystemServices.IsReferenceType(type))
            {
                _il.Emit(OpCodes.Ldnull);
                _il.Emit(OpCodes.Unbox_Any, GetSystemType(type));
            }
            else //valuetype or valuetype/unconstrained generic parameter
            {
                //TODO: if MethodBody.InitLocals is false
                //_il.Emit(OpCodes.Ldloca, GetDefaultValueHolder(type));
                //_il.Emit(OpCodes.Initobj, GetSystemType(type));
                _il.Emit(OpCodes.Ldloc, GetDefaultValueHolder(type));
            }

            PushType(type);
        }
EmitAssembly