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

  • FullMag

    FullMag

    15 ŞUBAT 2007
  • LimeFire

    LimeFire

    2 ŞUBAT 2012
  • tatermoog

    tatermoog

    2 AĞUSTOS 2006