बीच क्या अंतर है Guid.NewGuid()और new Guid()?
कौन सा पसंद किया जाता है?
बीच क्या अंतर है Guid.NewGuid()और new Guid()?
कौन सा पसंद किया जाता है?
जवाबों:
new Guid() एक "खाली" ऑल -० गाइड (00000000-0000-0000-0000-000000000000 बहुत उपयोगी नहीं है) बनाता है।
Guid.NewGuid() एक अद्वितीय मूल्य के साथ एक वास्तविक गाइड बनाता है, जो आप शायद चाहते हैं।
new Guid()के बराबर है Guid.Empty।
Guid.NewGuid() एक एल्गोरिथ्म का उपयोग करके एक नया UUID बनाता है जिसे बहुत ही असंभावित रूप से टकराव बनाने के लिए डिज़ाइन किया गया है।
new Guid() एक UUID बनाता है जो सभी शून्य है।
आम तौर पर आप पूर्व को पसंद करेंगे, क्योंकि यह UUID का बिंदु है (जब तक कि आप इसे कहीं और से प्राप्त नहीं कर रहे हैं)।
ऐसे मामले हैं जहां आप वास्तव में एक सर्व-शून्य यूयूआईडी चाहते हैं, लेकिन इस मामले में Guid.Emptyया default(Guid)आपके इरादे के बारे में स्पष्ट है, और किसी को यह पढ़ने की संभावना कम है कि एक अद्वितीय मूल्य की उम्मीद है।
सभी में, new Guid()यह स्पष्टता की कमी के कारण उपयोगी नहीं है, लेकिन एक मान-प्रकार का होना संभव नहीं है, जिसमें एक पैरामीटर रहित निर्माता नहीं है जो एक सभी-शून्य-और-शून्य मान लौटाता है।
संपादित करें: वास्तव में, एक मान प्रकार पर एक पैरामीटर रहित निर्माता होना संभव है जो शून्य और अशक्त करने के लिए सब कुछ सेट नहीं करता है, लेकिन आप इसे C # में नहीं कर सकते हैं, और जब यह कहा जाएगा और कब होगा इसके बारे में नियम बस एक ऑल-जीरो स्ट्रक्चर बनाया जाना भ्रमित करने वाला है, इसलिए यह वैसे भी अच्छा विचार नहीं है।
[मैं समझता हूं कि यह एक पुराना धागा है, बस कुछ और विस्तार को जोड़ते हुए] मार्क और जॉन हैना के दो उत्तर मतभेदों को जोड़ते हैं, भले ही इसमें कुछ दिलचस्पी हो सकती है
Guid.NewGuid()
आखिरकार CoCreateGuid (OLE32 पर एक COM कॉल) (संदर्भ यहाँ ) और वास्तविक कार्य UuidCreate द्वारा किया जाता है ।
Guide.Empty का उपयोग यह जांचने के लिए किया जाता है कि क्या किसी गाइड में सभी शून्य हैं। यह नई गाइड के साथ प्रश्न में गाइड के मूल्य की तुलना के माध्यम से भी किया जा सकता है ()
इसलिए, यदि आप एक की जरूरत है अद्वितीय पहचानकर्ता , जवाब है Guid.NewGuid ()
Guid.NewGuid(), जैसा कि यह इरादा के रूप में GUIDs बनाता है।
Guid.NewGuid()एक खाली Guidऑब्जेक्ट बनाता है , इसे कॉल करके आरंभ करता है CoCreateGuidऔर ऑब्जेक्ट को लौटाता है।
new Guid() केवल एक खाली GUID (सभी शून्य, मुझे लगता है) बनाता है।
मुझे लगता है कि उन्हें कंस्ट्रक्टर को सार्वजनिक करना था जैसा Guidकि एक है struct।