Each metadata table holds information about the elements of your program. For example, one metadata table describes the classes in your code, another table describes the fields, and so on.
Each row of each metadata table is uniquely identified in the MSIL portion of the PE file by a metadata token. Metadata tokens are conceptually similar to pointers, persisted in MSIL, that reference a particular metadata table.
.method public hidebysig static int32 Main() cil managed
{
.entrypoint
// Code size 36 (0x24)
.maxstack 3
.locals init ([0] int32 ValueOne,
[1] int32 ValueTwo,
[2] int32 CS$1$0000)
IL_0000: nop
IL_0001: ldc.i4.s 10
IL_0003: stloc.0
IL_0004: ldc.i4.s 20
IL_0006: stloc.1
IL_0007: ldstr "The Value is: {0}"
IL_000c: ldloc.0
IL_000d: ldloc.1
IL_000e: call int32 MyApp::Add(int32,
int32)
IL_0013: box [mscorlib]System.Int32
IL_0018: call void [mscorlib]System.Console::WriteLine(string,
object)
IL_001d: nop
IL_001e: ldc.i4.0
IL_001f: stloc.2
IL_0020: br.s IL_0022
IL_0022: ldloc.2
IL_0023: ret
} // end of method MyApp::Main