C # bagaimana cara membuat nilai panduan?

Jawaban:

897
Guid id = Guid.NewGuid();
David
sumber
252
Jika Anda, seperti saya, melakukan kesalahan dengan melakukan (Guid baru (). ToString ()) Anda akan mendapatkan 0000-00000-00000-00000. Anda perlu melakukan Guid.NewGuid (). ToString ()
Joao Carlos
12
Anda mungkin tertarik untuk memformat Guid juga msdn.microsoft.com/en-us/library/97af8hh4(v=vs.110).aspx
Anil Vangari
9
Koreksi kecil, tidak ada fungsi 'toString ()' pada objek Guid, itu adalah 'ToString ()'
AB
95

Guid.NewGuid() menciptakan panduan acak baru.

Adam Driscoll
sumber
83

Ada dua cara

var guid = Guid.NewGuid();

atau

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

keduanya menggunakan kelas Guid, yang pertama membuat Obyek Guid, yang kedua adalah string Guid.

Justin
sumber
47
@ Justin, Itu salah satu cara untuk melakukannya. var guid = Guid.NewGuid().ToString()hanya mengubahnya menjadi string.
Michael Meadows
@MichaelMeadows Ya itu benar, yang pertama membuat Obyek Guid baru, yang kedua membuat string.
Justin
34
var guid = new Guid();

Hei, ini 'valid', meski tidak terlalu berguna, Guid.

(panduan ini semua nol, jika Anda tidak tahu. Terkadang ini diperlukan untuk menunjukkan tidak ada panduan, dalam kasus di mana Anda tidak ingin menggunakan Panduan yang dapat dibatalkan)


sumber
Itu tidak membuat semua nol. Itu menciptakan Guid yang valid. Guid.Empty mengembalikan semua nol.
FlavourScape
8
@FlavorScape sebelum Anda mencoba, saya yakin Anda 50 rep (melalui karunia) Anda salah. Sepakat?
meh, saya sedang memikirkan Guid.NewGuid (). Saya benar-benar peduli untuk memverifikasi Guid baru ()
FlavourScape
11
Saya mengalahkan Anda satu per satu dengan solusi ini: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
Saat Anda harus melewati panduan ke kode yang bukan milik Anda, yang tidak menerima panduan yang dapat dibatalkan.
26

Untuk membuat pemandu all-0 "kosong" seperti 00000000-0000-0000-0000-000000000000.

var makeAllZeroGuID = new System.Guid();

atau

var makeAllZeroGuID = System.Guid.Empty;

Untuk membuat panduan aktual dengan nilai unik, apa yang mungkin Anda inginkan.

var uniqueGuID = System.Guid.NewGuid(); 
reza.cse08
sumber
21
System.Guid desiredGuid = System.Guid.NewGuid();
siphab
sumber
Ini tampaknya menjadi cara baru untuk melakukan ini, setidaknya pada 2012. Saya sepertinya tidak memiliki Guid.NewGuid () tersedia pada tahun 2015.
Dave Yarwood
2
@DaveYarwood Guid telah berada di bawah System namespace untuk waktu yang sangat lama, dan adalah apa yang orang lain rujuk dalam jawaban lain (kebetulan saja bahwa kelas baru sudah memiliki Penggunaan ditambahkan untuk System Namespace di normal template)
Skuld
18

Jika Anda ingin membuat Panduan "diinginkan", Anda dapat melakukannya

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

di mana <guidValue>akan menjadi sesuatu seperti 1A3B944E-3632-467B-A53A-206305310BAE.

Zeliax
sumber
2

Ada juga ShortGuid - Kelas GUID yang lebih pendek dan ramah di C #. Ini tersedia sebagai Nuget . Informasi lebih lanjut di sini .

PM> Install-Package CSharpVitamins.ShortGuid

Pemakaian:

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

Ini menghasilkan panduan baru, menggunakan panduan itu untuk membuat ShortGuid, dan menampilkan dua nilai yang setara di konsol. Hasil akan menjadi sesuatu di sepanjang baris:

ShortGuid: FEx1sZbSD0ugmgMAF_RGHw 
Guid:      b1754c14-d296-4b0f-a09a-030017f4461f
Joel Wiklund
sumber
0

Jika Anda menggunakan ini di Reflection C #, Anda bisa mendapatkan panduan dari atribut properti sebagai berikut

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

SAliaMunch
sumber
-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
sammer
sumber
dapat digunakan alternatvity SCOPE.IDENTITY ()
sammer
28
C # terlihat jauh berbeda dari yang saya ingat.
Archibald