Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 默认Guid格式_C#_.net_.net 4.5 - Fatal编程技术网

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()

您可以定义一个for
Guid
,并使用它:

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()

您可以定义一个for
Guid
,并使用它:

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。@Blam
Guid.ToString()
忽略任何自定义格式提供程序。我怀疑这是否有效,但不妨尝试一下
Guid
IFormattable
类型,但是进入“full”重载的
IFormatProvider
被忽略。Quote:
提供程序
参数保留供将来使用,不影响此方法的执行。您可以在方法调用中传递null。@Blam
Guid.ToString()
忽略任何自定义格式提供程序。