簡體   English   中英

將Int32轉換為CultureInfo PowerShell vs C#

[英]Convert Int32 to CultureInfo PowerShell vs C#

在PowerShell中,我可以使用以下語法:

PS C:\> [globalization.cultureinfo]1049

LCID             Name             DisplayName
----             ----             -----------
1049             ru-RU            Russian (Russia)


PS C:\> [globalization.cultureinfo]1033

LCID             Name             DisplayName
----             ----             -----------
1033             en-US            English (United States)


PS C:\> [globalization.cultureinfo]1080

LCID             Name             DisplayName
----             ----             -----------
1080             fo-FO            Faroese (Faroe Islands)

但是我無法使用C#實現相同的轉換:

var eng = (CultureInfo)1033;

給出編譯時錯誤:

錯誤CS0030無法將類型'int'轉換為'System.Globalization.CultureInfo'

它如何在PowerShell中工作,以及如何在C#中執行相同操作?

PowerShell隱式調用CultureInfo(Int32)構造函數 ,即new CultureInfo(1049)

PowerShell的轉換規則記錄在MSDN上 在您的情況下,規則5適用:

  1. 構造函數轉換。 如果目標類型定義了接受您輸入的構造函數,請使用該構造函數。

證明:

PS> Trace-Command TypeConversion { [Globalization.CultureInfo]1049 | Out-Null } -PSHost
DEBUG: TypeConversion Information: 0 : Constructor result: "ru-RU".

這可能是由某些PowerShell內部人員完成的。 就像可以將字符串轉換為[xml] 通過C#強制轉換可能無法實現。 但是,請使用采用整數的靜態GetCultureInfo方法:

var eng = System.Globalization.CultureInfo.GetCultureInfo(1033)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM