لماذا يقوم مُنشئ GUID بدون المعلمة بإنشاء GUID فارغ؟

StackOverflow https://stackoverflow.com/questions/401198

سؤال

لماذا يقوم مُنشئ GUID بدون المعلمة بإنشاء GUID فارغ بدلاً من الافتراضي لإنشاء واحد كما هو الحال مع Guid.NewGuid ()؟

هل هناك استخدام خاص لـ GUID فارغ؟

هل كانت مفيدة؟

المحلول

لماذا يقوم مُنشئ GUID بدون المعلمة بإنشاء GUID فارغ بدلاً من الافتراضي لإنشاء واحد كما هو الحال مع Guid.NewGuid ()؟

إجابة قصيرة: لأن اللغة/وقت التشغيل لم تسمح للمصمم من نوع GUID بتحديد مُنشئ افتراضي.

ليس فقط تقليديًا أن قيمة بنية "تم إنشاؤها الافتراضية" هي صفر ، بل لا يمكنك ببساطة تحديد مُنشئ افتراضي لهيكل. عندما تقول New Guid () يمنحك وقت التشغيل كائنًا جديدًا حيث تتم تهيئة جميع الحقول إلى قيمها الافتراضية: http://msdn.microsoft.com/en-us/library/ah19swz4٪28vs.71٪29.aspx

يمكن العثور على بعض الأساس المنطقي هنا: http://www.yoda.arachsys.com/csharp/faq/#struct.constructors

نصائح أخرى

يتوافق هذا السلوك مع بقية أنواع القيمة في إطار .NET. عند "تحديد" نوع القيمة ، يتم استخدام قيمة افتراضية. يحدث هذا فقط ليكون الافتراضي لـ GUID مماثلة لقيمة INT32 الافتراضية لـ 0.

يعد GUID فارغًا مفيدًا لتمثيل عدم وجود GUID. نظرًا لأن أنواع القيمة ليست قابلة للارتداد (بشكل افتراضي نعم ، يمكنك استخدام Nullable).

على سبيل المثال ، أستخدم GUID كخصائص معرف لأنها سهلة العمل معها. لذلك إحدى الطرق لمعرفة ما إذا كان قد تم استمرار كائن (وهو عندما يحصل على هويته) ، يمكنني التحقق من قيمة المعرف مقابل GUID فارغ.

أعتقد أنه من المعتاد أن تكون القيمة الافتراضية ، أو بنية أو نوع مدمج ، صفر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top