উত্তর:
Guidএকটি মান ধরণের , সুতরাং প্রকারের একটি পরিবর্তনশীল Guidশুরুর সাথে শূন্য হতে পারে না। এটি যদি খালি গাইডের মতো হয় তবে আপনি যদি তা জানতে চান তবে আপনি কেবল এটি ব্যবহার করতে পারেন:
if (guid == Guid.Empty)
if (nullableGuid == null || nullableGuid == Guid.Empty)যদি সত্যিই চান তবে আপনি নিজের ব্যবহার বা ... সম্ভবত এটি খুব কমই আসে যা বেশিরভাগ মানুষের পক্ষে এটির পক্ষে উপযুক্ত নয়।
public static bool IsNullOrDefault<T>(this T? self) where T : struct { return !self.HasValue || self.Value.Equals(default(T)); }
একটি জিনিস জন্য, Guidnullable হয় না। আপনি পরীক্ষা করতে পারেন:
myGuid == default(Guid)
যা এর সমান:
myGuid == Guid.Empty
myGuid == default
এখানে একটি অবিচ্ছেদ্য গাইডের জন্য একটি সহজ বর্ধিত পদ্ধতি।
/// <summary>
/// Determines if a nullable Guid (Guid?) is null or Guid.Empty
/// </summary>
public static bool IsNullOrEmpty(this Guid? guid)
{
return (!guid.HasValue || guid.Value == Guid.Empty);
}
হালনাগাদ
আপনি যদি সত্যিই এটিকে সর্বত্র ব্যবহার করতে চান তবে আপনি নিয়মিত গাইডের জন্য অন্য একটি এক্সটেনশন পদ্ধতি লিখতে পারেন। এটি কখনই নালু হতে পারে না, তাই কিছু লোক এটি পছন্দ করবে না ... তবে এটি আপনি যে উদ্দেশ্যটির সন্ধান করছেন তাতে কাজ করে এবং আপনি গাইডের সাথে কাজ করছেন কিনা তা আপনার জানতে হবে না? বা গাইড (রি-ফ্যাক্টরিং ইত্যাদির জন্য দুর্দান্ত)।
/// <summary>
/// Determines if Guid is Guid.Empty
/// </summary>
public static bool IsNullOrEmpty(this Guid guid)
{
return (guid == Guid.Empty);
}
আপনি এখন গাইড someGuid.IsNullOrEmpty();বা গাইড ব্যবহার করছেন কিনা তা আপনি সব ক্ষেত্রেই ব্যবহার করতে পারেন ।
যেমনটি আমি বলেছিলাম, কিছু লোক নামকরণ সম্পর্কে অভিযোগ করবে কারণ IsNullOrEmpty()বোঝা যাচ্ছে যে মানটি নালার হতে পারে (যখন এটি না পারে)। আপনি কি সত্যিই চেয়েছিলেন, মত এক্সটেনশন জন্য একটি আলাদা নাম সঙ্গে আসা পর্যন্ত IsNothing()বা IsInsignificant()বা যাই হোক না কেন :)
ইস্পটি কার্যকারিতা যুক্ত করতে আপনি গাইডকে একটি এক্সটেনশন পদ্ধতি তৈরি করতে পারেন:
public static class GuidEx
{
public static bool IsEmpty(this Guid guid)
{
return guid == Guid.Empty;
}
}
public class MyClass
{
public void Foo()
{
Guid g;
bool b;
b = g.IsEmpty(); // true
g = Guid.NewGuid();
b = g.IsEmpty; // false
b = Guid.Empty.IsEmpty(); // true
}
}
g = new Guid()আসলে একটি খালি গাইড তৈরি করবে। আপনি লেখার ইচ্ছা ছিল g = Guid.NewGuid()?
অন্যরা যেমন উল্লেখ করেছে, প্রশ্নের ভিত্তি এখানে সবই নেই। সি # Guidঅযোগ্য নয়। তবে, Guid?হয়। একটি চেক একটি পরিষ্কার ভাবে Guid?হয় nullবা Guid.Emptyযদি ফল চেকের মাধ্যমে হয় GetValueOrDefault()হয় Guid.Empty। যেমন,
Guid? id;
// some logic sets id
if (Guid.Empty.Equals(guid.GetValueOrDefault()))
{
// Do something
}
আপনি জানেন আমি এই বিবৃতিটি সারাক্ষণ দেখতে পাই
গাইড একটি মান ধরণের, তাই গাইডের একটি পরিবর্তনশীল প্রারম্ভ থেকে শূন্য হতে পারে না
তবে এটি ঠিক সত্য নয়।
আপনি কর্মসূচীটি বাতিল করতে কোনও প্রোগ্রাম সেট করতে পারবেন না, তবে কিছু এসকিউএল যখন কোনও ইউনিকআইডেন্টিফায়ার এ টানবে এবং এটি একটি গাইডের সাথে মানচিত্র করে, এবং যদি মানটি ডিবিতে নਾਲ হয়, মানটি সি # তে নাল হিসাবে উঠে আসে।
Guid.Empty