在foreach语句中使用null合并

Ava*_*her 1 c# foreach null null-coalescing-operator

试图弄清楚如何让null合并运算符在foreach循环中工作.

我正在检查字符串的结尾并基于此,将其路由到某个方法.基本上我想说的是....

foreach (String s in strList)
{
    if s.EndsWith("d") ?? Method1(s) ?? Method2(s) ?? "Unknown file type";
}
Run Code Online (Sandbox Code Playgroud)

在尝试这样做时,当然你得到"运算符??不能用于类型bool和类型字符串." 我知道还有其他方法可以做到这一点,只是想看看如何使用null合并来完成它.

周末愉快.

@Richard Ev:哦,当然是的.切换,如果不是,等等只是好奇如何处理它

@Jon Skeet:看完你的评论后,它打了我,这真是太糟糕了!我基本上对两个文件扩展感兴趣.例如,如果文件以"abc"结尾,则发送到方法1,如果文件以"xyz"结尾发送到方法2.但是如果文件以"hij"的扩展名结束,那么该怎么办...繁荣,你是完成.

感谢Brian和GenericTypeTea以及尽管输入

我满足于称它已关闭.

Bob*_*Bob 8

看起来你想要使用普通的三元运算符,而不是null合并.就像是:

(s.EndsWith("d") ? Method1(s) : Method2(s)) ?? "Unknown file type";
Run Code Online (Sandbox Code Playgroud)

这相当于:

string result;
if (s.EndsWith("d"))
  result = Method1(s);
else
  result = Method2(s);
if (result == null)
  result = "Unknown file type";
return result;
Run Code Online (Sandbox Code Playgroud)