试图弄清楚如何使空合并运算符在foreach循环中工作。
我正在检查字符串以什么结尾,并以此为基础,将其路由到特定方法。基本上我想说的是...
foreach (String s in strList)
{
if s.EndsWith("d") ?? Method1(s) ?? Method2(s) ?? "Unknown file type";
}
尝试执行此操作时,您当然会得到“不能在bool类型和string类型上使用运算符??”。我知道还有其他方法可以做到,只是想看看如何通过空合并实现。
周末愉快。
@Richard Ev:当然可以。切换,如果其他,等等。只是很好奇
可以处理
@Jon Skeet:在读完您的评论后,我很震惊,这真是太糟糕了!我是
基本上对两个文件扩展名感兴趣。如果文件以“ abc”结尾
例如,如果文件以“ xyz”结尾,则发送到方法1,然后发送到方法2。
如果文件扩展名为“ hij” ... boom,该怎么办?
也感谢Brian和GenericTypeTea的宝贵意见
我很满意将其关闭。
最佳答案
看起来您想使用普通的三元运算符,而不是空合并。就像是:
(s.EndsWith("d") ? Method1(s) : Method2(s)) ?? "Unknown file type";
这等效于:
string result;
if (s.EndsWith("d"))
result = Method1(s);
else
result = Method2(s);
if (result == null)
result = "Unknown file type";
return result;
关于c# - 在foreach语句中使用空合并,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3788352/