元数据是来源代码本身信息的一部分,在汇编时储存在议会的一个特别部分。 这在议会结构方面确实是一个执行细节。 对典型的C#应用发展来说,你并不真的需要知道这一点。 如果你开发开发开发工具,则这主要是相关的。
“元数据”一词有些误导。 大会元数据包括像常数和直面字体等代码中的不足,从字眼的通常意义上说,这实际上不是元数据。 更正确的术语或许是不可执行的数据。
当C#汇编成一个组时,汇编产出分成两节。 IL是按编码格式实际可执行守则,是“元数据”,是所有其他方面:类型、接口和成员申报、方法签名、恒定、外部依附等等。
Take this program:
class Program
{
public static void Main(string[] args)
{
var x = 2 + 2;
Console.WriteLine("Hello World!");
}
}
When this program is compiled into an assembly, it is separated into metadata and IL.
The metadata contains these declarations (represented in a language-independent binary format):
class Program
{
public static void Main(string[] args);
}
Furthermore metadata contains the string literal "Hello World!"
, and the information that the assembly references System.Console.WriteLine
in mscorlib.dll
.
只有这一部分被汇编成国际空间法研究所:
var x = 2 + 2;
Console.WriteLine("Hello World!");
请注意,该方法参考和字面说明作为元数据点在《国际交易日志》中体现。 另一方面,元数据中的方法申报使IL与实施计算仪的代码相挂钩。
So it comes down to a way to separate the executable (imperative) IL code from the non-executable (declarative) parts.
这一分离为什么有用? 因为它允许在不需要实际执行任何IL的情况下提取和使用元数据的工具。 例如,视觉演播室通过阅读元数据,能够向在集会上定义的成员提供完成代码。 汇编者可以核实,其他集会所要求的方法实际上已经存在,参数相应。