SORU
11 Mayıs 2009, PAZARTESİ


C#, boş bir nesne üzerinde bir uzantı yöntemini çağırdığınızda ne olur?

Yöntem null değerine sahip olur mu ya da bir null başvuru özel veriyor mu?

MyObject myObject = null;
myObject.MyExtensionMethod(); // <-- is this a null reference exception?

Eğer bu asla benim kontrol edeceğim durum 'bu' boş parametre?

CEVAP
11 Mayıs 2009, PAZARTESİ


Sorun (istisna) çalışacak. Uzatma yöntemleri sanal aramalar kullanmayın (örn. "" ıl talimat,"") callvirt uzatma yöntemi Kendin yazıyorsun sürece boş Çek mi yani yok. aramayın Bu aslında bazı durumlarda yararlıdır:

public static bool IsNullOrEmpty(this string value)
{
    return string.IsNullOrEmpty(value);
}
public static void ThrowIfNull<T>(this T obj, string parameterName)
        where T : class
{
    if(obj == null) throw new ArgumentNullException(parameterName);
}

vb

Temelde, statik çağrıları çağrıları çok edebi vardır yani

string s = ...
if(s.IsNullOrEmpty()) {...}

olur:

string s = ...
if(YourExtensionClass.IsNullOrEmpty(s)) {...}

belli ki boş Çek yoktur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gavin Hoey

    Gavin Hoey

    21 Aralık 2007
  • Marina and The Diamonds

    Marina and T

    8 Temmuz 2008
  • Matus Slovak

    Matus Slovak

    5 Temmuz 2007