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

  • Max Lee

    Max Lee

    18 AĞUSTOS 2006
  • Drakinen

    Drakinen

    1 EYLÜL 2008
  • ShotgunSandwichENT

    ShotgunSandw

    3 EKİM 2012