C#如何创建Guid值?


Answers:




83

有两种方法

var guid = Guid.NewGuid();

要么

var guid = Guid.NewGuid().ToString();

两者都使用Guid类,第一个创建Guid对象,第二个创建Guid字符串。


47
@Justin,这是一种实现方式。var guid = Guid.NewGuid().ToString()只是把它变成一个字符串。
Michael Meadows '02

@MichaelMeadows是的,是的,第一个创建了一个新的Guid Object,第二个创建了一个字符串。
贾斯汀


34
var guid = new Guid();

嘿,它是“有效的”,尽管不是很有用,Guid。

(如果您不知道,guid全部为零。有时候,如果您不想使用可为空的Guid,则需要使用此值来表示无guid)


那不会产生全零。它创建一个有效的Guid。Guid.Empty返回全零。
FlavorScape

8
@FlavorScape,然后再尝试,我打赌您50代表(通过赏金)您错了。交易吗

嗯,我在想Guid.NewGuid()。我真的很想验证新的Guid()
FlavorScape 2013年

11
我以以下解决方案击败了您:var guid = new Guid(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, });
Jeppe Stig Nielsen

2
当您必须传递一个GUID来编码时,您将不拥有该GUID,该GUID不接受可为空的GUID。

26

使“空”全0 guid像00000000-0000-0000-0000-000000000000

var makeAllZeroGuID = new System.Guid();

要么

var makeAllZeroGuID = System.Guid.Empty;

制作具有唯一值的实际Guid,这可能是您想要的。

var uniqueGuID = System.Guid.NewGuid(); 

21
System.Guid desiredGuid = System.Guid.NewGuid();

至少从2012年开始,这似乎是实现此目标的新方法。我似乎没有在2015
Dave Yarwood

2
@DaveYarwood Guid已经在System名称空间下使用了很长时间,这是其他答案中每个其他人都引用的内容(恰好是一个新类已经在系统中为System Namespace添加了using)。常规模板)
Skuld 2015年

18

如果您要创建“所需”向导,则可以执行

var tempGuid = Guid.Parse("<guidValue>");

哪里<guidValue>会像1A3B944E-3632-467B-A53A-206305310BAE


2

还有ShortGuid-C#中一个较短且对URL友好的GUID类。它可以作为Nuget使用。更多信息在这里

PM> Install-Package CSharpVitamins.ShortGuid

用法:

Guid guid = Guid.NewGuid();
ShortGuid sguid1 = guid; // implicitly cast the guid as a shortguid
Console.WriteLine(sguid1);
Console.WriteLine(sguid1.Guid);

这将产生一个新的guid,使用该guid创建一个ShortGuid,并在控制台中显示两个等效值。结果将类似于以下内容:

ShortGuid: FEx1sZbSD0ugmgMAF_RGHw 
Guid:      b1754c14-d296-4b0f-a09a-030017f4461f

0

如果您在Reflection C#中使用它,则可以从property属性获取guid,如下所示

var propertyAttributes= property.GetCustomAttributes();
foreach(var attribute in propertyAttributes)
{
  var myguid= Guid.Parse(attribute.Id.ToString());
}


-2
//Retrive your key ID on the bases of GUID 

declare @ID as uniqueidentifier

SET @ID=NEWID()
insert into Sector(Sector,CID)

Values ('Diry7',@ID)


select SECTORID from sector where CID=@ID

可以使用alternatvity SCOPE.IDENTITY()
sammer

28
C#看起来比我记得的要大得多。
阿奇博尔德,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.