SORU
28 AĞUSTOS 2008, PERŞEMBE


Eğer genel bir türü bir dize ise test etmek için en iyi yol? (c#)

Herhangi bir tür ilkel veya başka bir şekilde izin gerektiğini genel bir Dersim var. Bu tek sorun default(T) kullanıyor. Bir değer türü, varsayılan ya da dize aradığınızda, makul bir değer (boş dize) başlatır. Bir nesne üzerinde default(T) çağırdığınızda, null döndürüyor. Çeşitli nedenlerle eğer ilkel bir tür değilse, o zaman bu tür bir varsayılan örnek olacaktır emin olmalıyızdeğilnull. Burada deneme 1:

T createDefault()
{
    if(typeof(T).IsValueType)
    {
        return default(T);
    }
    else
    {
        return Activator.CreateInstance<T>();
    }
}

Sorun - dize değeri türü değil, ama parametresiz bir kurucu yoktur. Yani, geçerli çözüm:

T createDefault()
{
    if(typeof(T).IsValueType || typeof(T).FullName == "System.String")
    {
        return default(T);
    }
    else
    {
        return Activator.CreateInstance<T>();
    }
}

Ama bu çakma gibi geliyor. Daha güzel bir şekilde dizgi kolu var mı?

CEVAP
28 AĞUSTOS 2008, PERŞEMBE


Varsayılan(dizi) null dize değil, unutmayın.Boş. Kodunuzda özel bir durum isteyebilirsiniz:

if (typeof(T) == typeof(String)) return (T)(object)String.Empty;

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • Bad Lip Reading

    Bad Lip Read

    22 Mart 2011
  • Moto Journal

    Moto Journal

    28 Mayıs 2007