我刚刚生成了几百万个GUID,把它们变成了一个字符串并得到了长度...它总是一样的.转换为String时,我可以依赖GUID的这个固定长度吗?
此外,GUID的中间数字是否总是"4",如此截图所示?

Jim*_*m L 11
是的,长度是固定的,是的,当您使用标准的tostring格式时,中间的数字总是4.GUID中的一些位(几乎在任何非Windows窗口中称为UUID)都是固定的,以指示版本等等.
http://en.wikipedia.org/wiki/Uuid
编辑 我应该补充一点,"4"仅适用于根据.NET中实现的Guid.NewGuid算法生成的Guids.没有什么可以阻止你采取任意字节[16]并将其转换为Guid.因此,对于.Net中当前的算法实现,您只能将其存储为4.如果您从其他来源获取Guids,则无法在4.Net上更新.或者可能是Windows(取决于.Net使用自己的或Windows的生成器)可能会更改GUID的固定数量
例如,以下是完全正常工作的代码,并且不会有4个位置:
var rand = new Random();
var byteArray = new byte[16];
rand.NextBytes(byteArray);
var g = new Guid(byteArray);
Run Code Online (Sandbox Code Playgroud)
来自Guid.ToString 的文档(不带参数):
此 Guid 的值,格式如下:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中 GUID 的值表示为一组 8、4、4、4 和 12 位且分隔开的一系列小写十六进制数字通过连字符。返回值的示例是“382c74c3-721d-4f34-80e5-57657b6cbc27”。
所以答案是“是”,它的长度总是相同的。
至于4,它是一个版本号(根据http://en.wikipedia.org/wiki/Uuid)。使用该算法生成的每个 GUID 的该位置都会有 4,但较旧的 GUID 将有 1、2 或 3。未来的 GUID 可能有 5 或更高的值。