コード例 #1
0
        internal void ForEach(LocalBuilder local, Type elementType, Type enumeratorType,
                              LocalBuilder enumerator, MethodInfo getCurrentMethod)
        {
            ForState forState = new ForState(local, DefineLabel(), DefineLabel(), enumerator);

            Br(forState.TestLabel);
            MarkLabel(forState.BeginLabel);

            Call(enumerator, getCurrentMethod);

            ConvertValue(elementType, GetVariableType(local));
            Stloc(local);
            _blockStack.Push(forState);
        }
コード例 #2
0
        internal object For(LocalBuilder?local, object?start, object?end)
        {
            ForState forState = new ForState(local, DefineLabel(), DefineLabel(), end);

            if (forState.Index != null)
            {
                Load(start);
                Stloc(forState.Index);
                Br(forState.TestLabel);
            }
            MarkLabel(forState.BeginLabel);
            _blockStack.Push(forState);
            return(forState);
        }