When a type declares an explicit static constructor, the just-in-time (JIT) compiler adds a check to each static method and instance constructor of the type to make sure that the static constructor was previously called.
Вот эта потеря производительности.
Про DI принцип не понял, при чем он к inline инициализации?
На мой взгляд, это проблема, т.к. по моим наблюдениям, к сожалению(!) программисты предпочитают инициализировать поля (в данном случае статические) по месту объявления, и статический конструктор, как правило отсутствует, если только не требуется в нем написать некий «сложный» код.
Майкрософт на самом деле рекомендует инициализировать static поля inline. У FxCop даже варнинг такой есть. Рекомендуется это из за перформансе причин (подробности по ссылке)
public static ReadOnlyCollection<Char> WordsDelimeters = new ReadOnlyCollection<Char>(
new List<Char> { '\'', ',', '-', '/', '.', '\\', ' ' });
Недавно код крашился с NullReferrenceException при обращении к WordsDelimiters. (public поле это плохо, но все же :))
Ответ почему писать не буду, но подсказку дам — тут замешен static.
Я так и не понял, они открывают BCL, или весь .net, включай CLR(+GC+JIT и т.д.)?
Что такое код серверного стека?
На github'e после беглого просмотра я не увидел ничего, похожего на CLR.
ИМХО «перенос наследования» как то коряво звучит, а может она даже и неправильна (да, да, так написано в Википедии). Версия Липперта мне нравится больше: «Универсальный тип I ковариантен (in Т), если конструкция с аргументами ссылочного типа сохраняет направление возможности присваивания».
SpaceX, как я понял, не использует рос. составляющих, у них вроде все свое.
Да и Илон лоббирует свои ракеты вместо иностр. комплектующих, думаю он обрадовался такому повороту.
Вес теперь упирается в CLR. Mono как я слышал открыта только для Линукса, а для айОсов и Андроидов нужно платить.
Подскажите, как завязаны новые фишки шарпа с CLR? Скомпилированный Roslyn'ом код будет без проблем работать в mono runtime, или ее еще допиливать?
Вот эта потеря производительности.
Про DI принцип не понял, при чем он к inline инициализации?
Майкрософт на самом деле рекомендует инициализировать static поля inline. У FxCop даже варнинг такой есть. Рекомендуется это из за перформансе причин (подробности по ссылке)
На проекте, на разных версиях фреймворка я не смотрел
Недавно код крашился с NullReferrenceException при обращении к WordsDelimiters. (public поле это плохо, но все же :))
Ответ почему писать не буду, но подсказку дам — тут замешен static.
Но думаю что на статью там не наберется :(
зачем тогда их было сюда впихивать?Что такое код серверного стека?
На github'e после беглого просмотра я не увидел ничего, похожего на CLR.
У Эрика Липперта целый цикл статей на эту тему был.
ИМХО «перенос наследования» как то коряво звучит, а может она даже и неправильна (да, да, так написано в Википедии). Версия Липперта мне нравится больше: «Универсальный тип I ковариантен (in Т), если конструкция с аргументами ссылочного типа сохраняет направление возможности присваивания».
Да и Илон лоббирует свои ракеты вместо иностр. комплектующих, думаю он обрадовался такому повороту.
Подскажите, как завязаны новые фишки шарпа с CLR? Скомпилированный Roslyn'ом код будет без проблем работать в mono runtime, или ее еще допиливать?