试图弄清楚如何使空合并运算符在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/

10-12 04:18