Skip to Main Content
C# in a Nutshell, Second Edition
book

C# in a Nutshell, Second Edition

by Peter Drayton, Ben Albahari, Ted Neward
August 2003
Intermediate to advanced content levelIntermediate to advanced
928 pages
32h 1m
English
O'Reilly Media, Inc.
Content preview from C# in a Nutshell, Second Edition

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 equivalent of a C# 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 void BeginCatchBlock(Type exceptionType);
   public virtual void BeginExceptFilterBlock( );
   public virtual Label BeginExceptionBlock ...
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# in a Nutshell

C# in a Nutshell

Ben Albahari, Ted Neward, Peter Drayton
C# 7.0 in a Nutshell

C# 7.0 in a Nutshell

Joseph Albahari, Ben Albahari
C# Cookbook, 2nd Edition

C# Cookbook, 2nd Edition

Jay Hilyard, Stephen Teilhet
C# Cookbook

C# Cookbook

Stephen Teilhet, Jay Hilyard

Publisher Resources

ISBN: 0596005261Catalog PageErrata