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

  • bigky226

    bigky226

    11 HAZİRAN 2006
  • Dave Wallace

    Dave Wallace

    27 Kasım 2007
  • Madeon

    Madeon

    31 Ocak 2010