Las culturas se agrupan en tres conjuntos: la cultura invariante, las culturas neutrales y las culturas específicas. El cultivo en
es un cultivo neutro mientras que el cultivo en-US
es un cultivo específico.
GetCultureInfo
le dará la cultura que solicite, por lo que si solicita una cultura neutral, también obtendrá una cultura neutral como en
.
CreateSpecificCulture
va a crear una cultura específica de una cultura neutra por lo que si se llama a la CreateSpecificCulture("en")
CultureInfo
devuelto es para la cultura en-US
. No estoy seguro de cómo se asignan las culturas neutrales a las culturas específicas, pero debe haber alguna tabla dentro de BCL o Windows que contenga esas asignaciones y decide que se devuelve el en-US
y no el en-GB
. Especificar una referencia cultural específica como el argumento CreateSpecificCulture
le dará ese CultureInfo
específico como lo hace GetCultureInfo
.
Pero hay una característica sorprendente de la cultura específica creada:
Si el identificador de la cultura de la cultura específica devuelto por este método coincide con el identificador de la cultura de la actual cultura de Windows, este método crea un CultureInfo objeto que usa las anulaciones de cultura de Windows. Las modificaciones incluyen la configuración del usuario para las propiedades del objeto DateTimeFormatInfo devuelto por la propiedad DateTimeFormat y el objeto NumberFormatInfo devuelto por la propiedad NumberFormat.
Lo que esto significa es que si la cultura específica devuelto por CreateSpecificCulture
coincide con el cultivo seleccionado por el usuario en regional y de idioma panel de control de Windows, entonces cualquier personalización de usuario a que la cultura está incluido en el CultureInfo
devuelto. P.ej. el usuario puede cambiar el patrón de fecha larga o el separador decimal utilizado en números. Otra forma de pensar sobre esto es que cuando CreateSpecificCulture
devuelve una cultura que coincide con el nombre CurrentCulture
, en realidad devolverá esta cultura, incluidas las personalizaciones del usuario.
Por lo que puedo decir GetCultureInfo
no tiene esta propiedad y siempre devolverá un CultureInfo
sin modificaciones.
Y para verificar si una cultura es válida, usaría GetCultureInfo
.