c# - 使用三元运算符 : "only assignment, call, increment..."

标签 c# .net

我将 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/

相关文章:

.net - 高度复杂的集成网络应用程序 - 您会使用哪种语言?

.net - DXF : how to know which layers to show?

c# - 无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0

c# - 更改 LiveCharts 中轴刻度标签的格式

c# - 不断越界异常

c# - 反序列化来自 Facebook 的数据

.net - System.IO.FileSystemWatcher 监视网络服务器文件夹 - 性能注意事项

c# - 存储和排序同时具有 DateTime 和 Int 值的人员列表

c# - 使用另一个列表 PowerShell 过滤列表

C# SVG(使用 device-cmyk() 或 icc-color())到 PDF 转换