Ini membuat saya bertanya-tanya mengapa Guid in .NET tidak memiliki IsNullOrEmpty()
metode (di mana kosong berarti semua nol)
Saya membutuhkan ini di beberapa tempat di kode ASP.NET MVC saya saat menulis REST API.
Atau apakah saya melewatkan sesuatu karena tidak ada orang di Internet yang meminta hal yang sama?
c#
asp.net-mvc
Gautam Jain
sumber
sumber
Guid.Empty
Jawaban:
Guid
adalah tipe nilai , jadi variabel tipeGuid
tidak boleh nol untuk memulai. Jika Anda ingin tahu apakah itu sama dengan pedoman kosong, Anda bisa menggunakan:sumber
if (nullableGuid == null || nullableGuid == Guid.Empty)
... atau membuat metode ekstensi Anda sendiri jika Anda benar-benar menginginkannya. Agaknya hal itu cukup jarang muncul sehingga tidak sepadan bagi kebanyakan orang.public static bool IsNullOrDefault<T>(this T? self) where T : struct { return !self.HasValue || self.Value.Equals(default(T)); }
Untuk satu hal,
Guid
tidak dapat dibatalkan. Anda dapat memeriksa:yang setara dengan:
sumber
myGuid == default
Berikut adalah metode ekstensi sederhana untuk Panduan nullable.
MEMPERBARUI
Jika Anda benar-benar ingin menggunakan ini di mana pun Anda dapat menulis metode ekstensi lain untuk Panduan biasa. Ini tidak pernah bisa nol, jadi beberapa orang tidak akan menyukai ini ... tetapi ini memenuhi tujuan yang Anda cari dan Anda tidak perlu tahu apakah Anda bekerja dengan Guid? atau Panduan (bagus untuk memfaktorkan ulang, dll.).
Sekarang Anda dapat menggunakan
someGuid.IsNullOrEmpty();
di semua kasus, apakah Anda menggunakan Panduan atau Panduan ?.Seperti yang saya katakan, beberapa orang akan mengeluh tentang penamaan karena
IsNullOrEmpty()
menyiratkan bahwa nilainya bisa nol (bila tidak bisa). Jika Anda benar-benar ingin, buat nama yang berbeda untuk ekstensi sepertiIsNothing()
atauIsInsignificant()
atau apa pun :)sumber
Anda dapat membuat metode ekstensi ke Guid untuk menambahkan fungsionalitas IsEmpty:
sumber
g = new Guid()
sebenarnya akan membuat pedoman kosong. Apakah Anda berniat untuk menulisg = Guid.NewGuid()
?Seperti yang ditunjukkan orang lain, premis pertanyaan tidak semuanya ada. C #
Guid
tidak bisa dibatalkan. Namun demikianGuid?
. Cara yang bersih untuk memeriksa apakah aGuid?
adalahnull
atauGuid.Empty
dengan memeriksa apakah hasilnyaGetValueOrDefault()
adalahGuid.Empty
. Misalnya,sumber
Anda tahu saya melihat pernyataan seperti ini sepanjang waktu
tetapi ini TIDAK BENAR.
Setuju Anda tidak dapat memprogram menetapkan Panduan ke null, tetapi ketika beberapa SQL menarik UniqueIdentifier dan memetakannya ke Panduan, dan jika nilai tersebut adalah null di db, nilainya akan muncul sebagai null di C #.
sumber