Skip to Main Content
C# in a Nutshell
book

C# in a Nutshell

by Ben Albahari, Ted Neward, Peter Drayton
March 2002
Intermediate to advanced content levelIntermediate to advanced
864 pages
31h 8m
English
O'Reilly Media, Inc.
Content preview from C# in a Nutshell

Name

ILGenerator

Synopsis

This class generates MSIL (Microsoft Intermediate Language) instructions. You receive an ILGenerator object from a GetILGenerator method in a builder class. For example, you can use the ConstructorBuilder.GetILGenerator() to create MSIL instructions for a constructor, or MethodBuilder.GetILGenerator() to create MSIL instructions for a method. Use BeginScope() and EndScope() to start and stop a lexical scope.

To emit instructions, use the Emit() method. The Emit() method requires an OpCode object. The easiest way to supply this is by using one of the constant fields from OpCodes, as in myGenerator.Emit(OpCodes.Ret);. EmitWriteLine() creates the MSIL code required to call System.Console.WriteLine() with the supplied variable. You can also define and mark labels in the instruction stream (DefineLabel() and MarkLabel()), emit an instruction for throwing an exception (ThrowException()), and define local variables (DeclareLocal()).

Emit error handling blocks with BeginExceptionBlock() and EndExceptionBlock() (which emits the C# equivalent of a try statement), BeginCatchBlock() (which emits the equivalent of the catch statement), and BeginFinallyBlock() (which emits the equivalent of the finally statement). You must end the exception block using EndExceptionBlock().

public class ILGenerator {
// Public Instance Methods
   public virtual method void BeginCatchBlock(
        Type exceptionType);  
   public virtual method void BeginExceptFilterBlock(); public virtual method Label ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C# 8.0 in a Nutshell

C# 8.0 in a Nutshell

Joseph Albahari, Eric Johannsen
C# 10 in a Nutshell

C# 10 in a Nutshell

Joseph Albahari
C# in a Nutshell, Second Edition

C# in a Nutshell, Second Edition

Peter Drayton, Ben Albahari, Ted Neward
Code like a Pro in C#

Code like a Pro in C#

Jort Rodenburg

Publisher Resources

ISBN: 0596001819Catalog PageErrata