谁帮我看下这段代码,嘛意思?

misssdf 2011-07-12 09:03:10


var sig = new SignalSource(SignalSourceType.ATV, 1);
try
{
sig = CurrentSignal.Type == SignalSourceType.ATV
? new SignalSource(SignalSourceType.DTV, 1)
: CurrentSignal.Type == SignalSourceType.DTV
? new SignalSource(SignalSourceType.视频, 1)
: CurrentSignal.Type == SignalSourceType.视频
? new SignalSource(SignalSourceType.分量, 1)
: CurrentSignal.Type == SignalSourceType.分量
? new SignalSource(SignalSourceType.PC, 1)
: CurrentSignal.Type == SignalSourceType.PC
? new SignalSource(SignalSourceType.HDMI, 1)
: CurrentSignal.Type == SignalSourceType.HDMI &&
CurrentSignal.Route == 1
? new SignalSource(SignalSourceType.HDMI, 2)
: CurrentSignal.Type == SignalSourceType.HDMI &&
CurrentSignal.Route == 2
? new SignalSource(SignalSourceType.HDMI, 3)
: new SignalSource(SignalSourceType.ATV, 1);
pmtMsg.Dispatcher.Invoke(new System.Windows.Forms.MethodInvoker(() => ChangeSignal(sig)));
}
catch (Exception ex)
{
#if DEBUG
Utils.CommonTools.WriteException(ex, "切换信号源代码异常");
#endif
return;
}

...全文
242 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
ohkuy 2011-07-12
  • 打赏
  • 举报
回复
sig = CurrentSignal.Type == SignalSourceType.ATV
? new SignalSource(SignalSourceType.DTV, 1)
: CurrentSignal.Type == SignalSourceType.DTV
? new SignalSource(SignalSourceType.视频, 1)
: CurrentSignal.Type == SignalSourceType.视频
? new SignalSource(SignalSourceType.分量, 1)
-----------------------------------------
换种形式,再看看:

switch (CurrentSignal.Type)
{
case SignalSourceType.ATV:
sig=new SignalSource(SignalSourceType.DTV, 1)
break;
case SignalSourceType.DTV:
sig=new SignalSource(SignalSourceType.视频, 1)
break;
case SignalSourceType.视频:
sig=new SignalSource(SignalSourceType.分量, 1)
break;
}
//或者用简单工厂模式更简单一点
Fry_cici 2011-07-12
  • 打赏
  • 举报
回复
后面的? 都是根据 CurrentSignal.Type == SignalSourceType.ATV

这个条件来的
肖恩 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 chrisak 的回复:]
这蛋疼的三目运算符...
[/Quote]
同意
Katherine 2011-07-12
  • 打赏
  • 举报
回复
三元运算符:
<test>?<result if ture>:<result if false>
适用于简单的赋值语句,大量代码时用if。
shighui 2011-07-12
  • 打赏
  • 举报
回复
比我写的还那个啥,我最多用二个三元符。呵呵
战灬龙 2011-07-12
  • 打赏
  • 举报
回复
楼上说的对呀!!!!!
ChrisAK 2011-07-12
  • 打赏
  • 举报
回复
这蛋疼的三目运算符...
小笨熊 2011-07-12
  • 打赏
  • 举报
回复
这代码让我看着很晕哦,。可读性太差了吧。。。三目运算符的优先级从右到左,自己转化成if else就可以了。
fantasy_song 2011-07-12
  • 打赏
  • 举报
回复
if(CurrentSignal.Type == SignalSourceType.ATV)
{
sig = new SignalSource(SignalSourceType.DTV, 1);
}
else if(CurrentSignal.Type == SignalSourceType.DTV)
{
sig = new SignalSource(SignalSourceType.视频, 1);
}
else if......
小笨熊 2011-07-12
  • 打赏
  • 举报
回复
这代码让我看和很晕哦,。可读性太差了吧。。。
misssdf 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 andywangguanxi 的回复:]

这代码写的....

像上面说的,换成if else就都清楚了
[/Quote]
话说不会替换。。。
EdsionWang 2011-07-12
  • 打赏
  • 举报
回复
这代码写的....

像上面说的,换成if else就都清楚了
kobevivo 2011-07-12
  • 打赏
  • 举报
回复
不清楚哦
zhujiawei7 2011-07-12
  • 打赏
  • 举报
回复
写的挺艺术的

就是if else
ErrorCode1987 2011-07-12
  • 打赏
  • 举报
回复
看下三元运算符
替换成if else 你就明白了
ymf5555 2011-07-12
  • 打赏
  • 举报
回复
挺好看的
consuy 2011-07-12
  • 打赏
  • 举报
回复
不知道撒
言多必失 2011-07-12
  • 打赏
  • 举报
回复
这是对多次三元操作符的应用
Mxuzz 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 ohkuy 的回复:]
sig = CurrentSignal.Type == SignalSourceType.ATV
? new SignalSource(SignalSourceType.DTV, 1)
: CurrentSignal.Type == SignalSourceType.DTV
? new SignalSource(SignalSourceType.视频, 1)
: Curre……
[/Quote]


同意,呵呵 用case语句 或者 if else
t842938838 2011-07-12
  • 打赏
  • 举报
回复
简单的就用这个,复杂的还是 if else 可读性强
加载更多回复(2)

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧