SORU
16 EKİM 2008, PERŞEMBE


Genel bir parametre olarak yazın mümkün olabilecek mi?

Böyle bir şey yapmak istiyorum :

myYear = record.GetValueOrNull<int?>("myYear"),

Genel parametre olarak null türü dikkat edin.

İşlevi benim ilk denemem boş dönebilir, GetValueOrNull beri oldu bu :

public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
  where T : class
{
    object columnValue = reader[columnName];

    if (!(columnValue is DBNull))
    {
        return (T)columnValue;
    }
    return null;
}

Ama aldığım hata şu an

Türü 'int?' 'T' genel tür ya da yöntem . parametre olarak kullanmak için bir başvuru türü olmalıdır

Doğru! Null olabilecek bir yapı. Yapı kısıtlaması ve yan etkisi boş artık geri dönüş yok) sınıf kısıtlaması değiştirmeyi denedim:

public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName)
  where T : struct

Şimdi bu atama

myYear = record.GetValueOrNull<int?>("myYear");

Aşağıdaki hata veriyor

Türü 'int?' 'T' genel tür ya da yöntem . parametre olarak kullanmak için null olmayan bir değer türü olmalıdır

Tüm mevcut genel bir parametre olarak null bir türünü belirleyen?

CEVAP
16 EKİM 2008, PERŞEMBE


Return Null olabilecek tür değiştirme ve sigara null parametresi yöntemini çağırın

static void Main(string[] args)
{
    int? i = GetValueOrNull<int>(null, string.Empty);
}


public static Nullable<T> GetValueOrNull<T>(DbDataRecord reader, string columnName) where T : struct
{
    object columnValue = reader[columnName];

    if (!(columnValue is DBNull))
    	return (T)columnValue;

    return null;
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CZTUTORIALS

    CZTUTORIALS

    28 Ocak 2011
  • Hot For Nutrition

    Hot For Nutr

    26 ŞUBAT 2007
  • The Exploiteers

    The Exploite

    4 Ocak 2011