【发布时间】:2013-08-20 06:36:14
【问题描述】:
我将动作字典定义为:
var actions = new Dictionary<string, Action<string, string>>();
我把动作放在那里:
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);
此代码显示错误:
错误 1 只有赋值、调用、递增、递减和新对象 表达式可以用作 声明
actions[pair.Key](pair.Value, pair.Key) 这不是电话吗?我错过了什么吗?是否可以使用'?动作字典的符号?我试图找到一些关于它的东西,但很难找到关于“?”的任何东西。运算符和此错误是因为 '?'被谷歌忽略。
【问题讨论】:
-
你没有分配任何东西,它真的更短吗?
-
@Sayse 是的,我不是,但我需要做“赋值、调用、递增、递减……”,而我正在调用。我更喜欢这种表示法,但重点是我的好奇心。我真的很想知道,我的电话有什么问题:)
-
声明
(? : )不是调用 - 它是三元运算符,不能单独使用 - 与将true && false;之类的内容放在新行相同。