我想测试一个id是否未知,或者,如果已知,则关联值是否已更改。我目前正在使用与此类似的代码,但是对于那些不熟悉该模式的人来说很难理解。您能想到一种在LOC中将其保持简短的同时使其更具可读性的方法吗?

string id;
string actual;
string stored;

if (!someDictionary.TryGetValue (id, out stored) || stored != actual) {
    // id not known yet or associated value changed.
}

最佳答案

在我看来,这很好……阅读其他任何两个if语句都一样容易。关于我唯一可能要更改的事情是翻转对否定的要求以提早退出:

if (someDictionary.TryGetValue(id, out stored) && stored == actual) {
    return;
}
// store new value

我一点也没有看到任何困惑,也从未将它视为一个特别麻烦的习语,并且谦虚地建议那些对此感到困惑的C#开发人员会习惯它。它是常见的,简洁的,并且应为该问题提供尽可能多的LOC。将其转换为10行代码会使它变得太重要了。

如果我经常使用它,则使用诸如ContainsEqualValue之类的扩展方法将是合适的-但我会在扩展方法中使用与您完全相同的代码。

关于c# - 如何使此字典TryGetValue代码更具可读性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3014703/

10-09 18:28