有没有办法如何在If条件下的一行上写TryGetValue.调用TryGetValue的正常方式是:
string value;
Dictionary.TryGetValue("Key", out value);
If(value == "condition") { ... }
Run Code Online (Sandbox Code Playgroud)
我正在寻找的将是这样的.
If(Dictionary.TryGetValue("Key", out string) == "Condition") { ... }
Run Code Online (Sandbox Code Playgroud)
我知道这条线不起作用,但它显示了所需的结果.
有什么方法可以实现这个目标吗?
您需要首先使用返回bool但是您可以使用out参数(使用> = C#7):
if (Dictionary.TryGetValue("Key", out string value) && value == "Condition")
{
//...
}
Run Code Online (Sandbox Code Playgroud)
MSDN:
从C#7.0开始,您可以在方法调用的参数列表中声明out变量,而不是在单独的变量声明中.
如果您不使用C#7或者您希望它更短,您可以使用此扩展程序:
public static bool TryEvaluateValue<TKey, TValue>(this IDictionary<TKey, TValue> dict, TKey key, Func<TValue, bool> evalValue)
{
TValue val;
if(!dict.TryGetValue(key, out val))
return false;
return evalValue(val);
}
Run Code Online (Sandbox Code Playgroud)
然后你的条件if成为:
if (Dictionary.TryEvaluateValue("Key", value => value == "Condition"))
{
//...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1870 次 |
| 最近记录: |