tags:

views:

466

answers:

3

So i have this method:

    internal K GetValue<T, K>(T source, string col) where T : IBaseObject
    {
        string table = GetObjectTableName(source.GetType());
        DataTable dt = _mbx.Tables[table];
        DataRow[] rows = dt.Select("ID = " + source.ID);
        if (rows.Length == 0) return K;

        return (K) rows[0][col];
    }

I want to be able to return a null, or some kind of empty value, if no rows are found. What's the correct syntax to do this?

+8  A: 

You could return default(K), and that means you will return null if K is a reference type, or 0 for int, '\0' for char, and so on...

Then you can easily verify if that was returned:

if (object.Equals(resultValue, default(K)))
{
    //...
}
CMS
+2  A: 

You could return default(K).

lc
+4  A: 

You have to use the class generic constraint on the K type parameter (because classes - as opposed to structs - are nullable)

internal K GetValue<T, K>(T source, string col)
        where K : class
        where T : IBaseObject
{
    // ...
    return null;
}
DrJokepu