[英]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適用:
- 構造函數轉換。 如果目標類型定義了接受您輸入的構造函數,請使用該構造函數。
證明:
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.