Что такое метаданные в .NET?

Вы можете изменить прототип String, если хотите. Модификация прототипа String, как правило, неодобрительно, но я лично предпочитаю этот метод, поскольку он делает очиститель кода IMHO.

String.prototype.rtrim = function(s) { 
    return this.replace(new RegExp(s + "*$"),''); 
};

Затем вызывается ...

var s1 = "this is a test~";
var s = s1.rtrim('~');
alert(s); 
37
задан KMC 14 January 2012 в 09:09
поделиться

1 ответ

Метаданные являются частями информации от самого исходного кода, который хранится в специальном разделе в блоке при компиляции. Это - действительно деталь реализации в том, как структурированы блоки. Для типичной разработки приложений C# Вы не должны действительно знать об этом. Главным образом необходимо при разработке инструментов разработчика.

термин "метаданные" является несколько вводящим в заблуждение. Метаданные блока включают материал от кода как константы и строковые литералы, который не является действительно метаданными в обычном значении слова. Более правильный термин, возможно, был бы неисполняемыми данными.

, Когда C# компилируется в блок, вывод компиляции разделен на два раздела. IL, который является фактическим исполняемым кодом в формате байт-кода и "метаданными", которые являются всеми другими материал: введите, взаимодействуйте через интерфейс, и объявления элемента, сигнатуры методов, константы, внешние зависимости и так далее.

Берут эту программу:

class Program
{
    public static void Main(string[] args)
    {
        var x = 2 + 2;
        Console.WriteLine("Hello World!");
    }
}

, Когда эта программа компилируется в блок, она разделена на метаданные и IL. Метаданные содержат эти объявления (представленный в независимом от языка двоичном формате):

class Program
{
    public static void Main(string[] args);
}

, Кроме того, метаданные содержат строковый литерал "Hello World!", и информация что ссылки на сборки System.Console.WriteLine в mscorlib.dll.

Только эта часть компилируется в IL:

var x = 2 + 2;
Console.WriteLine("Hello World!");

С протестом, что ссылка метода и литеральная строка представлены в IL как указатели в метаданные. С другой стороны, объявления метода в метаданных имеют указатели в IL к коду, которые реализуют тело метода.

, Таким образом, это сводится к способу разделить исполняемый (обязательный) код IL от неисполняемых (декларативных) частей.

, Почему это разделение полезно? Поскольку это позволяет инструментам извлекать и использовать метаданные, не имея необходимость на самом деле выполнять любой из IL. Например, Visual Studio в состоянии предоставить завершение кода участникам, определенным в блоке только путем чтения метаданных. Компилятор может проверить, что методы, названные от других блоков на самом деле, существуют и соответствие параметров и так далее.

0
ответ дан 27 November 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: