А чё, так можно было? Недокументированный C#
В C# есть четыре ключевых слова, которых нет в документации, но компилятор их спокойно принимает. Одно из них объявляет метод с переменным числом аргументов без всяких массивов. Собирается такой код без единого предупреждения, отрабатывает на Windows и честно выводит переданные значения.
Ту же самую сборку переносят на Ubuntu — и вместо результата прилетает InvalidProgramException с сообщением, что соглашение вызова не поддерживается. Байты те же, машина архитектурно та же, x64, а поведение разное, и падает при этом не сам метод, а код, который его вызывает.
Разберёмся, почему одна проверка в джите решает судьбу всей сборки.
Post #69525
16.8K

- ❤ 18
- 👏 13
- 🤯 7
- 🥰 6
- 😁 6
- 🤡 5
- 🤮 3
- 🙏 3
- 🤣 3
- 🤪 3
- 😢 1