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

  • Blunty

    Blunty

    13 Mart 2006
  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • Trevor Eckhart

    Trevor Eckha

    19 Aralık 2009