C# 默认Guid格式
考虑以下代码C# 默认Guid格式,c#,.net,.net-4.5,C#,.net,.net 4.5,考虑以下代码 var guid = Guid.NewGuid(); var a = guid.ToString(); var b = guid.ToString("N"); a的值看起来像7c9e6679-7425-40de-944b-e07fc1f90ae7 b的值类似于7c9e6679742540de944be07fc1f90ae7 有没有办法告诉.NET我想要第二个表单,默认情况下格式字符串为N 其他类型(如DateTime)上的ToString的默认行为与当前区域性相关联。Guid的默
var guid = Guid.NewGuid();
var a = guid.ToString();
var b = guid.ToString("N");
a
的值看起来像7c9e6679-7425-40de-944b-e07fc1f90ae7
b
的值类似于7c9e6679742540de944be07fc1f90ae7
有没有办法告诉.NET我想要第二个表单,默认情况下格式字符串为N
其他类型(如DateTime
)上的ToString
的默认行为与当前区域性相关联。Guid
的默认行为是否可能以类似的方式绑定到区域性?(我怀疑。)
出于兼容性的原因,我需要在整个代码库中使用不带破折号的GUID字符串表示形式,但是很容易忘记N
参数而不发出任何警告
有没有办法告诉.NET我想要第二个表单,默认情况下格式字符串为N
不,这是的默认行为
此Guid的值,使用“D”格式说明符格式化,如下所示:
xxxxxxxx-xxxx-xxxx-xxxx-XXXXXXXXXXXXXX
其中GUID的值表示为一系列小写十六进制数字,以8、4、4、4和12位为一组,并用连字符分隔。返回值的示例为“382c74c3-721d-4f34-80e5-57657b6cbc27”。要将十六进制数字从a到f转换为大写,请对返回的字符串调用String.ToUpper方法
您可以添加自定义FxCop规则(或自定义其他一些静态分析工具)来检测Guid.ToString()
的使用情况,但无法阻止它
有没有办法告诉.NET我想要第二个表单,默认情况下格式字符串为N
不,这是的默认行为
此Guid的值,使用“D”格式说明符格式化,如下所示:
xxxxxxxx-xxxx-xxxx-xxxx-XXXXXXXXXXXXXX
其中GUID的值表示为一系列小写十六进制数字,以8、4、4、4和12位为一组,并用连字符分隔。返回值的示例为“382c74c3-721d-4f34-80e5-57657b6cbc27”。要将十六进制数字从a到f转换为大写,请对返回的字符串调用String.ToUpper方法
您可以添加自定义FxCop规则(或自定义其他一些静态分析工具)来检测Guid.ToString()
的使用情况,但您无法阻止它。否。原因很清楚:
以注册表格式返回此实例值的字符串表示形式
及
返回值类型:
System.String
此
Guid
的值,使用“D”格式说明符格式化如下:xxxxxxxx-xxxx-xxxx-xxxx-XXXXXXXXXXXXXX
ToString()
您可以定义一个forGuid
,并使用它:
public static class GuidExtensions
{
public static string ToMyString(this Guid guid)
{
return guid.ToString("N");
}
}
// elsewhere
Guid guid = /* ... */;
Console.WriteLine(guid.ToMyString());
但是我想忘记调用它就像忘记“N”
一样容易,所以这可能不是什么大的改进。(如果您确实这样做,请为扩展方法想出一个比ToMyString()
:-)更好的名称)否。问题很清楚:
以注册表格式返回此实例值的字符串表示形式
及
返回值
类型:System.String
此Guid
的值,使用“D”格式说明符格式化如下:
xxxxxxxx-xxxx-xxxx-xxxx-XXXXXXXXXXXXXX
ToString()
您可以定义一个forGuid
,并使用它:
public static class GuidExtensions
{
public static string ToMyString(this Guid guid)
{
return guid.ToString("N");
}
}
// elsewhere
Guid guid = /* ... */;
Console.WriteLine(guid.ToMyString());
但是我想忘记调用它就像忘记“N”
一样容易,所以这可能不是什么大的改进。(如果您确实这样做,请为扩展方法想出一个比ToMyString()
:-)更好的名称)我怀疑这是否有效,但也许可以尝试一下Guid
是IFormattable
类型,但是进入“full”重载的IFormatProvider
被忽略。Quote:提供程序
参数保留供将来使用,不影响此方法的执行。您可以在方法调用中传递null。@BlamGuid.ToString()
忽略任何自定义格式提供程序。我怀疑这是否有效,但不妨尝试一下Guid
是IFormattable
类型,但是进入“full”重载的IFormatProvider
被忽略。Quote:提供程序
参数保留供将来使用,不影响此方法的执行。您可以在方法调用中传递null。@BlamGuid.ToString()
忽略任何自定义格式提供程序。