16

我正在创建自己的字典,但在实现TryGetValue函数时遇到了麻烦。当找不到密钥时,我没有任何东西可以分配给 out 参数,所以我保持原样。这会导致以下错误:“必须在控制离开当前方法之前分配输出参数‘值’”

所以,基本上,我需要一种方法来获取默认值(0、false 或 nullptr,具体取决于类型)。我的代码类似于以下内容:

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

    ....

}
4

3 回答 3

45

您正在寻找default关键字。

例如,在您给出的示例中,您需要以下内容:

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

    ....

}
于 2008-12-15T03:07:07.487 回答
7
default(T)
于 2008-12-15T23:13:16.723 回答
5
return default(int);

return default(bool);

return default(MyObject);

所以在你的情况下你会写:

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;
        }
    }

....

}

于 2008-12-15T03:06:47.563 回答