SORU
14 Kasım 2008, Cuma


Mark parametre olarak null C#/.NET?

Var C geçiliyor null engelleyen fonksiyon bir parametre için#/görevlendirebilirim basit öznitelik veya veri sözleşme.NET? İdeal olarak bu da zaman null her yerde çalışma zamanı sırasında ve kullanılmıyor değişmez ArgumentNullException atmak emin olmak için derleme zamanında kontrol eder.

Şu anda böyle bir şey yazıyorum ...

if (null == arg)
  throw new ArgumentNullException("arg");

... için null. olmasını beklemek her tartışmayı ben

Aynı kayda göre, aşağıdaki başarısız olur mademki orada Nullable<> tersi:

NonNullable<string> s = null; // throw some kind of exception

CEVAP
14 Kasım 2008, Cuma


Hiçbir şey derleme zamanı boş, ne yazık ki yok.

Yapı ve dönüşüm yeni kullanan blogumda son zamanlarda yayınlanan hacky solution biraz var.

.Code Contracts malzeme ile NET 4.0, hayat çok daha güzel olacak. Hala gerçek dili olmayan null etrafında sözdizimi ve destek olması çok güzel olurdu, ama kod sözleşmeler çok yardımcı olacaktır.

Ben de biraz daha basit bir hale getirir MiscUtil adlı ThrowİfNull uzantısı yöntemi.

Son bir nokta kullanarak herhangi bir nedenle "if (null == arg)" yerine "if (arg == null)"? İkincisi daha kolay okunur buluyorum, ve eski C problemi çözer C için geçerli değildir#.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • huyked

    huyked

    28 Mart 2008
  • pain975

    pain975

    27 NİSAN 2008
  • Whizzpopping

    Whizzpopping

    10 Kasım 2005