【发布时间】:2016-03-08 15:11:11
【问题描述】:
过去我在 c# 中经常使用嵌套三元组。引入An event handler后,作为赋值操作,报错:“无法确定条件表达式的类型,因为'void'和'void'之间没有隐式转换”
这是我正在编写的代码的两个sn-ps,上面的一个是功能性的,下面的一个给出类型转换错误:
AppTableConfigCollection collection =
tableType == TableType.Attribute
? _attributeTableConfigs = new AppTableConfigCollection(_db, AppTableConfigCollection.ATTRIBUTE)
: tableType == TableType.Core
? _coreTableConfigs = new AppTableConfigCollection(_db, AppTableConfigCollection.CORE)
: tableType == TableType.Domain
?_domainTableConfigs = new AppTableConfigCollection(_db, AppTableConfigCollection.DOMAIN)
: tableType == TableType.Configuration
?_configTableConfigs = new AppTableConfigCollection(_db, AppTableConfigCollection.CONFIG)
:_offlineTableConfigs = new AppTableConfigCollection(_db, AppTableConfigCollection.OFFLINE);
PropertyChangedEventHandler property =
tableType == TableType.Attribute
? _attributeTableConfigs.PropertyChanged += new PropertyChangedEventHandler(appTableConfigs_PropertyChanged)
: tableType == TableType.Core
? _coreTableConfigs.PropertyChanged += new PropertyChangedEventHandler(appTableConfigs_PropertyChanged)
: tableType == TableType.Domain
? _domainTableConfigs.PropertyChanged += new PropertyChangedEventHandler(appTableConfigs_PropertyChanged)
: tableType == TableType.Configuration
? _configTableConfigs.PropertyChanged += new PropertyChangedEventHandler(appTableConfigs_PropertyChanged)
: _offlineTableConfigs.PropertyChanged += new PropertyChangedEventHandler(appTableConfigs_PropertyChanged);
感谢您提供的任何帮助!
【问题讨论】:
-
来自地狱的神圣三元......我认为你在滥用它的含义。我认为这将很难帮助您弄清楚。
-
Argh 不要写这样难以辨认的代码。它是如此不可维护。
-
顺便说一句,像
_attributeTableConfigs.PropertyChanged += new PropertyChangedEventHandler(appTableConfigs_PropertyChanged)这样的操作不会返回PropertyChangedEventHandler供您分配。这可能是你的问题。 -
你可能想要使用 switch 语句
-
使用 if-else。三元运算符不是为此目的而制作的。
标签: c# ternary-operator