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

  • AutoklubZAPRESIC

    AutoklubZAPR

    17 Mayıs 2011
  • Charles Griffin Gibson

    Charles Grif

    26 NİSAN 2006
  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006