當前位置: 首頁>>代碼示例>>C#>>正文


C# EmitContext.DeclareLocal方法代碼示例

本文整理匯總了C#中Mono.CSharp.EmitContext.DeclareLocal方法的典型用法代碼示例。如果您正苦於以下問題:C# EmitContext.DeclareLocal方法的具體用法?C# EmitContext.DeclareLocal怎麽用?C# EmitContext.DeclareLocal使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在Mono.CSharp.EmitContext的用法示例。


在下文中一共展示了EmitContext.DeclareLocal方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: ResolveVariable

		public void ResolveVariable (EmitContext ec)
		{
			if (HoistedVariant != null)
				return;

			if (builder == null) {
				builder = ec.DeclareLocal (VariableType, Pinned);
			}
		}
開發者ID:tgiphil,項目名稱:mono,代碼行數:9,代碼來源:statement.cs

示例2: CreateBuilder

		public void CreateBuilder (EmitContext ec)
		{
			if ((flags & Flags.Used) == 0) {
				if (VariableInfo == null) {
					// Missing flow analysis or wrong variable flags
					throw new InternalErrorException ("VariableInfo is null and the variable `{0}' is not used", name);
				}

				if (VariableInfo.IsEverAssigned)
					ec.Report.Warning (219, 3, Location, "The variable `{0}' is assigned but its value is never used", Name);
				else
					ec.Report.Warning (168, 3, Location, "The variable `{0}' is declared but never used", Name);
			}

			if (HoistedVariant != null)
				return;

			if (builder != null) {
				if ((flags & Flags.CompilerGenerated) != 0)
					return;

				// To avoid Used warning duplicates
				throw new InternalErrorException ("Already created variable `{0}'", name);
			}

			//
			// All fixed variabled are pinned, a slot has to be alocated
			//
			builder = ec.DeclareLocal (Type, IsFixed);
			if (SymbolWriter.HasSymbolWriter)
				ec.DefineLocalVariable (name, builder);
		}
開發者ID:alisci01,項目名稱:mono,代碼行數:32,代碼來源:statement.cs

示例3: AddressOf

        public void AddressOf(EmitContext ec, AddressOp mode)
        {
            if ((mode & AddressOp.Store) != 0)
                spec.MemberDefinition.SetIsAssigned ();
            if ((mode & AddressOp.Load) != 0)
                spec.MemberDefinition.SetIsUsed ();

            //
            // Handle initonly fields specially: make a copy and then
            // get the address of the copy.
            //
            bool need_copy;
            if (spec.IsReadOnly){
                need_copy = true;
                if (ec.HasSet (EmitContext.Options.ConstructorScope)){
                    if (IsStatic){
                        if (ec.IsStatic)
                            need_copy = false;
                    } else
                        need_copy = false;
                }
            } else
                need_copy = false;

            if (need_copy){
                LocalBuilder local;
                Emit (ec);
                local = ec.DeclareLocal (type, false);
                ec.Emit (OpCodes.Stloc, local);
                ec.Emit (OpCodes.Ldloca, local);
                return;
            }

            if (IsStatic){
                ec.Emit (OpCodes.Ldsflda, spec);
            } else {
                if (!prepared)
                    EmitInstance (ec, false);
                ec.Emit (OpCodes.Ldflda, spec);
            }
        }
開發者ID:speier,項目名稱:shake,代碼行數:41,代碼來源:ecore.cs


注:本文中的Mono.CSharp.EmitContext.DeclareLocal方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。