Недопустимое значение CultureInfo больше не выбрасывает CultureNotFoundException

Создание информации о культуре с es-CA, которая явно неверна должна вызывать исключение, но больше не делает.

Это ранее выбрало CultureNotFoundException: new CultureInfo("es-CA"). Кажется, теперь он возвращается к es с "Неизвестной локалью". Хотя, работает что-то вроде xy-ZZ, что это довольно странно?

Почему это больше не генерирует исключение? Было ли это изменено в последней версии .NET?

Обновление 1

В документации упоминается следующее:

если операционная система не поддерживает эту культуру, а если имя не является именем дополнительной или замещающей культуры, метод генерирует исключение CultureNotFoundException.

Проверяя это на Windows 7, он бросает CultureNotFoundException, но в Windows 10 он не генерирует исключение.

Ответ 1

Теперь добавьте ответ на основе комментариев.

Из-за изменений в дизайне Windows теперь больше нет "недопустимой культуры", если имя соответствует BCP-47, поэтому вместо того, чтобы бросать исключение,.NET Framework/.NET Core принимает новую культуру.

Вы можете обратиться к обсуждение GitHub и приведенную ниже цитату,

Поскольку структура зависит от ОС для получения культур, ОС перемещается в модель, любое название культуры BCP-47 становится действительным даже ОС не поддерживает его. например, Windows 10 поддерживает любые хорошо сформированное название культуры, даже у ОС нет реальных данных для таких культура. например, при попытке создать культуру "xx-XXXX" в Windows 10 будет успешным. учитывая, что нет смысла имеют перечисление культуры, поскольку любой набор, который мы возвращаем, не означает, что это единственные поддерживаемые культуры. глядя на вашу проблему, вы обходитесь приемлемо. если действительно хотят иметь более эффективный способ, мы можем рассмотреть что-то вроде CultureInfo.TryGetCulture(), но, как я сказал ранее движение вперед почти любая культура будет действительной.