user4891
user4891

Reputation: 937

Returning a default value. (C#)

I'm creating my own dictionary and I am having trouble implementing the TryGetValue function. When the key isn't found, I don't have anything to assign to the out parameter, so I leave it as is. This results in the following error: "The out parameter 'value' must be assigned to before control leaves the current method"

So, basically, I need a way to get the default value (0, false or nullptr depending on type). My code is similar to the following:

class MyEmptyDictionary<K, V> : IDictionary<K, V>
{
    bool IDictionary<K, V>.TryGetValue (K key, out V value)
    {
        return false;
    }

    ....

}

Upvotes: 19

Views: 20470

Answers (3)

Jeff Yates
Jeff Yates

Reputation: 62367

You are looking for the default keyword.

For example, in the example you gave, you want something like:

class MyEmptyDictionary<K, V> : IDictionary<K, V>
{
    bool IDictionary<K, V>.TryGetValue (K key, out V value)
    {
        value = default(V);
        return false;
    }

    ....

}

Upvotes: 48

BCS
BCS

Reputation: 78506

default(T)

Upvotes: 7

Strelok
Strelok

Reputation: 51421

return default(int);

return default(bool);

return default(MyObject);

so in your case you would write:

class MyEmptyDictionary<K, V> : IDictionary<K, V>
{
    bool IDictionary<K, V>.TryGetValue (K key, out V value)
    {
        ... get your value ...
        if (notFound) {
          value = default(V);
          return false;
        }
    }

....

}

Upvotes: 5

Related Questions