KeyValuePair<K,V>
структура, не класс. Это похоже на выполнение:
int i = 10;
if (i != null) ...
(Хотя это на самом деле законно, с предупреждением, из-за нечетных nullable правил преобразования. Важный бит - то, что if
условие никогда не будет верно.)
Для создания этого "дополнительным" можно использовать nullable форму:
static void Foo(KeyValuePair<object,string>? pair)
{
if (pair != null)
{
}
// Other code
}
Примечание? в KeyValuePair<object,string>?
I found VCLFixPatch:
http://andy.jgknet.de/blog/?page_id=288
I used the techniques from this to replace the method I wanted to patch at runtime.
Изменение стороны реализации Classes.pas не потребует перекомпиляции всего. Delphi выясняет, нужно ли перекомпилировать модуль, с помощью алгоритма, который выглядит примерно так:
Важной концепцией является концепция символьной версии . При сохранении DCU Delphi вычисляет хэш на основе описания интерфейса символа и связывает его с символом. Другие устройства, использующие этот символ, также сохраняют версию символа. Таким образом можно избежать конфликтов времени компоновки, вызванных устаревшими символами, в отличие от большинства компоновщиков C.
В результате вы сможете добавить Classes.pas в свой проект и изменить его реализацию ] раздел почти так, как вам нравится, и по-прежнему иметь возможность статически связываться с остальными RTL и VCL и сторонними библиотеками, даже если они представлены только в объектном формате.
На что следует обратить внимание: