Arasındaki fark nedir Guid.NewGuid()
ve new Guid()
?
Hangisi tercih edilir?
Arasındaki fark nedir Guid.NewGuid()
ve new Guid()
?
Hangisi tercih edilir?
Yanıtlar:
new Guid()
"boş" bir all-0 kılavuzu yapar (00000000-0000-0000-0000-000000000000 çok kullanışlı değildir).
Guid.NewGuid()
benzersiz bir değerle gerçek bir rehber yapar, muhtemelen ne istersiniz.
new Guid()
eşdeğerdir Guid.Empty
.
Guid.NewGuid()
çarpışmaları çok, çok olası hale getirmek için tasarlanmış bir algoritma kullanarak yeni bir UUID oluşturur.
new Guid()
sıfırlar olan bir UUID oluşturur.
Genellikle öncekini tercih edersiniz, çünkü bu bir UUID'nin noktasıdır (tabii ki başka bir yerden almıyorsanız).
Gerçekten sıfırdan küçük bir UUID istediğiniz durumlar vardır, ancak bu durumda Guid.Empty
veya default(Guid)
niyetiniz hakkında daha nettir ve benzersiz bir değer yaratıldığını düşünen birinin okuma şansı daha azdır.
Genel olarak, new Guid()
bu netlik eksikliği nedeniyle faydalı değil, ancak sıfır-ve-sıfır değerlerini döndüren parametresiz bir yapıcıya sahip olmayan bir değer türüne sahip olmak mümkün değil.
Düzenleme: Aslında, her şeyi sıfır ve boş olarak ayarlamayan bir değer türünde parametresiz bir kurucuya sahip olmak mümkündür, ancak C # ile yapamazsınız ve ne zaman çağrılacağına ve ne zaman çağrılacağına ilişkin kurallar sadece sıfırdan oluşan bir yapı kafa karıştırıcı olabilir, bu yüzden zaten iyi bir fikir değil.
[Bunun eski bir konu olduğunu anlıyorum, sadece biraz daha ayrıntı ekliyor] Mark ve Jon Hanna'nın iki cevabı, bazılarını ilgilendirse de, farklılıkları özetliyor
Guid.NewGuid()
Sonunda CoCreateGuid'i (Ole32'ye COM çağrısı) çağırır ( burada referanstır ) ve asıl çalışma UuidCreate tarafından yapılır .
Guid.Empty, bir Guid'in tüm sıfırları içerip içermediğini kontrol etmek için kullanılır. Bu, söz konusu Rehber'in değeri ile yeni Rehber () karşılaştırılarak da yapılabilir.
Benzersiz bir tanımlayıcıya ihtiyacınız varsa , cevap Guid.NewGuid () şeklindedir.
Guid.NewGuid()
amaçlandığı gibi GUID'ler oluşturur.
Guid.NewGuid()
boş bir Guid
nesne oluşturur , çağırarak başlatır CoCreateGuid
ve nesneyi döndürür.
new Guid()
sadece boş bir GUID (tüm sıfırlar, sanırım) oluşturur.
Ben onlar yapıcı genel yapmak zorunda tahmin Guid
bir olduğunu struct
.