SORU
17 Aralık 2008, ÇARŞAMBA


Nasıl eğer bir nesnenin null olup olmadığını kontrol etmek için?

Nasıl belirli bir nesne aşağıdaki yöntemi uygulamak için nasıl başka bir deyişle null olup olmadığını kontrol yapın

bool IsNullableValueType(object o)
{
    ...
}

EDİT: NULL değer türleri arıyorum. Akılda ref tür yoktu.

//Note: This is just a sample. The code has been simplified 
//to fit in a post.

public class BoolContainer
{
	bool? myBool = true;
}

var bc = new BoolContainer();

const BindingFlags bindingFlags = BindingFlags.Public
						| BindingFlags.NonPublic
						| BindingFlags.Instance
						;


object obj;
object o = (object)bc;

foreach (var fieldInfo in o.GetType().GetFields(bindingFlags))
{
	obj = (object)fieldInfo.GetValue(o);
}

n artık değeri true eşit türde bir nesne bool (System.Boolean) anlamına gelir. Ben gerçekten ne istediğini 8* *türü bir nesne oldu

Ben geçici bir çözüm eğer o null olup olmadığını kontrol etmek için karar verdi ve n etrafında null bir sarıcı oluşturmak gibi.

CEVAP
17 Aralık 2008, ÇARŞAMBA


Null iki tür - Nullable<T> ve referans tipi vardır.

Jon sert kutulu tip olduğunu söyleyerek beni düzeltti, ama jenerik ile: - ne aşağıda. Bu aslında test tipi T, * obj parametre için sadece genel tür kesmesi (kolay arama) - işe yarayacaktır neredeyse aynı olmadan obj param olsa da.

static bool IsNullable<T>(T obj)
{
    if (obj == null) return true; // obvious
    Type type = typeof(T);
    if (!type.IsValueType) return true; // ref-type
    if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T>
    return false; // value-type
}

Ama bu zaten bir nesne değişkeni değerini kutulu varsa pek işe yaramaz.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • booba1234

    booba1234

    22 Temmuz 2006
  • Photoshop Tutorials

    Photoshop Tu

    22 HAZİRAN 2011
  • Tek Syndicate

    Tek Syndicat

    23 Temmuz 2008