我将 Action 字典定义为:
var actions = new Dictionary<string, Action<string, string>>();
我把这样的 Action 放在那里:
actions.Add("default", (value, key) => result.Compare(value, properties[key], Comparers.SomeComparer, key));
...
我正在使用这段代码来运行它:
if (actions.ContainsKey(pair.Key))
{
actions[pair.Key](pair.Value, pair.Key);
}
else
{
actions[""](pair.Value, pair.Key);
}
它工作得很好,但我想使用 '?'使其更短的符号:
actions.ContainsKey(pair.Key) ? actions[pair.Key](pair.Value, pair.Key) : actions[""](pair.Value, pair.Key);
此代码显示错误:
Error 1 Only assignment, call, increment, decrement, and new object expressions can be used as a statement
actions[pair.Key](pair.Value, pair.Key)
这不是调用吗? 我是不是漏掉了什么?是否可以使用'?'带有 Action 词典的符号?我试图找到一些关于那个的东西,但很难找到任何关于“?”的东西运算符和此错误是因为“?”被谷歌忽略。
最佳答案
试试这个:
actions[actions.ContainsKey(pair.Key) ? pair.key : ""](pair.Value, pair.Key);
这将解决您的问题。
关于c# - 使用三元运算符 : "only assignment, call, increment...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18328466/