C # วิธีการสร้างค่า Guid?


คำตอบ:


897
Guid id = Guid.NewGuid();

252
หากคุณเช่นฉันทำผิดพลาดในการทำ (ใหม่ Guid (). toString ()) คุณจะได้รับ 0000-00000-00000-00000 คุณต้องทำ Guid.NewGuid (). toString ()
Joao Carlos

12
คุณอาจสนใจฟอร์แมต Guid ด้วยmsdn.microsoft.com/en-us/library/97af8hh4(v=vs.110).aspx
Anil Vangari

9
การแก้ไขเล็กน้อยไม่มีฟังก์ชัน 'toString ()' บนวัตถุ Guid คือ 'ToString ()'
AB


83

มีสองวิธี

var guid = Guid.NewGuid();

หรือ

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

ทั้งคู่ใช้คลาส Guid ตัวแรกสร้างวัตถุ Guid ตัวที่สองคือสตริง Guid


47
@ จัสตินนั่นเป็นวิธีหนึ่งในการทำเช่นนั้น var guid = Guid.NewGuid().ToString()เพียงแค่เปลี่ยนเป็นสตริง
Michael Meadows

@MichaelMeadows ใช่ถูกต้องแล้วอันแรกสร้าง Guid Object ใหม่ส่วนที่สองสร้างสตริง
Justin


34
var guid = new Guid();

เฮ้มันเป็น 'ที่ถูกต้อง' ถึงแม้ว่าจะไม่ค่อยมีประโยชน์ Guid

(guid คือศูนย์ทั้งหมดหากคุณไม่รู้บางครั้งสิ่งนี้จำเป็นต้องระบุว่าไม่มี guid ในกรณีที่คุณไม่ต้องการใช้ Guid ที่ไม่มีค่า)


ไม่ได้สร้างศูนย์ทั้งหมด มันสร้าง Guid ที่ถูกต้อง Guid.Empty คืนค่าศูนย์ทั้งหมด
FlavourScape

8
@ FlavourScape ก่อนที่คุณจะลองฉันเดิมพันคุณ 50 ตัวแทน (ผ่านรางวัล) คุณผิด จัดการ?

ฉันคิด Guid.NewGuid () ฉันสนใจที่จะยืนยัน Guid () ใหม่จริงๆ
FlavourScape

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 ที่ไม่มีค่า

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 ฉันดูเหมือนจะไม่มี Guid.NewGuid () ให้บริการในปี 2558
Dave Yarwood

2
@DaveYarwood Guid อยู่ภายใต้ System namespace เป็นเวลานานและเป็นสิ่งที่ทุกคนอ้างถึงในคำตอบอื่น ๆ (มันเพิ่งเกิดขึ้นเมื่อคลาสใหม่มีการใช้เพิ่มเข้าไปใน System Namespace ใน เทมเพลตปกติ)
Skuld

18

หากคุณต้องการสร้าง Guid ที่ "ต้องการ" คุณสามารถทำได้

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

ซึ่งจะเป็นสิ่งที่ชอบ<guidValue>1A3B944E-3632-467B-A53A-206305310BAE


2

นอกจากนี้ยังมี ShortGuid - คลาส GUID ที่สั้นและเป็นมิตรใน C # มันสามารถใช้ได้เป็น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 # คุณสามารถรับ 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 # ดูแตกต่างจากที่ฉันจำได้มาก
อาร์ชิบัลด์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.