ILGenerator.MarkLabel Method
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Marks the Microsoft intermediate language (MSIL) stream's current position with the given label.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- loc
- Type: System.Reflection.Emit.Label
The label for which to set an index.
| Exception | Condition |
|---|---|
| ArgumentException | loc represents an invalid index into the label array. -or- An index for loc has already been defined. |
The following example demonstrates the use of MarkLabel to establish the location of a label that was defined earlier. Notice that the label is used in a call to the Emit(OpCode, Label) method overload before its location has been established.
This code is part of a larger example provided for the BeginExceptionBlock method.
adderIL.BeginFinallyBlock() ' The finally block block displays a message on the TextBlock, if the ' OutputBlock field has been set. Just as in the catch block, the following ' code tests whether the TextBlock is present, and skips the output if it is ' not present. adderIL.Emit(OpCodes.Ldsfld, demoOutput) adderIL.Emit(OpCodes.Ldnull) adderIL.Emit(OpCodes.Ceq) adderIL.Emit(OpCodes.Brtrue_S, skipOutputInFinally) ' Append a constant string to the Text property of the TextBlock. adderIL.Emit(OpCodes.Ldsfld, demoOutput) adderIL.Emit(OpCodes.Ldsfld, demoOutput) adderIL.Emit(OpCodes.Callvirt, getter) adderIL.Emit(OpCodes.Ldstr, "Executing the finally block." & vbLf) adderIL.Emit(OpCodes.Call, concat2) adderIL.Emit(OpCodes.Callvirt, setter) adderIL.MarkLabel(skipOutputInFinally) ' This is the end of the try/catch/finally block. adderIL.EndExceptionBlock()