本文整理汇总了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);
}
}
示例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);
}
示例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);
}
}