可以用??简化此语句吗?要么 ?。操作员?

时间:2018-12-26 17:02:00

标签: c#

我想知道是否可以使用???.简化以下内容。

private static Stream OpenData(string filename)
   => Loader == null ? throw new Exception("...") : Loader.GetStream(filename);

请注意,我不在乎可读性。

2 个答案:

答案 0 :(得分:2)

如果在null的情况下仍然抛出异常,为什么不直接调用该方法呢?

Loader.GetStream(filename);

如果Loader为null,它将抛出null引用异常,否则将成功调用GetStream方法。

在旁注中-Loader看起来像type(基于命名约定)...我将假定它是一个实例变量,因为编译器将阻止比较{{1} }到type

答案 1 :(得分:2)

您可以获得与您所拥有的完全相同的行为

private static Stream OpenData(string filename)
     => (Loader ?? throw new Exception("...")).GetStream(filename);

请问这是否更清楚。