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

  • John Lynn

    John Lynn

    8 Ocak 2010
  • Peter Sharp

    Peter Sharp

    11 ŞUBAT 2013
  • Turkish Airlines

    Turkish Airl

    11 AĞUSTOS 2006