我想知道如何确定 CultureInfo.CurrentCulture 返回的 CultureInfo 实例是否具有所有默认值,或者是否已由用户自定义。
我已经使用以下 LINQPad 片段和 LINQPad 命令行运行器进行了一些测试。
var ci = CultureInfo.CurrentCulture;
var dtf = ci.DateTimeFormat;
ci.Name.Dump("CultureInfo");
dtf.FullDateTimePattern.Dump("FullDateTimePattern");
dtf.LongDatePattern.Dump("LongDatePattern");
dtf.LongTimePattern.Dump("LongTimePattern");
我在区域对话框中选择英语(南非)作为我的格式,我的代码段报告了以下内容。
E:\Junk>lprun CurrentCulture.linq
CultureInfo: en-ZA
FullDateTimePattern: dd MMMM yyyy hh:mm:ss tt
LongDatePattern: dd MMMM yyyy
LongTimePattern: hh:mm:ss tt
然后我将长日期格式更改为隐藏当天的前导零,并将长短时间更改为 24 小时时间。该片段现在报告了这一点。
E:\Junk>lprun CurrentCulture.linq
CultureInfo: en-ZA
FullDateTimePattern: d MMMM yyyy HH:mm:ss
LongDatePattern: d MMMM yyyy
LongTimePattern: HH:mm:ss
尽管文化名称保持不变,但我更改的属性向我展示了新值。
我的问题是是否有一个属性或方法可以告诉我 CurrentCulture 返回的文化是否已从其默认值(在本例中为 en-ZA)更改。我认为 CultureInfo.UseUserOverride 可能是该属性,但在任何一种情况下它都会返回 true。