【问题标题】:Nullable List<> as out parameter可空列表<> 作为输出参数
【发布时间】:2011-01-14 08:01:45
【问题描述】:

这可能吗?

private void Test(out List<ExampleClass>? ExClass)
{

}

一个可以为空的 List 也是一个 out 参数?

【问题讨论】:

  • 既然已经写好了代码,为什么不自己尝试一下呢?

标签: c# list nullable out


【解决方案1】:

是否是out 参数在这里无关紧要。但是你不能用一个类来创建Nullable&lt;T&gt;T 必须是一个结构。否则编译器会报错。

除此之外,将参数名称大写(使用exClass 而不是ExClass)被认为是不好的风格。您的程序会以同样的方式运行,但任何阅读您的代码的人都可能会被误导。

【讨论】:

    【解决方案2】:

    仅将? 用于可空值类型。

    【讨论】:

      【解决方案3】:

      正如 Anton 所说,您不需要使用 Nullable&lt;T&gt; - 但它当然可以是 out 参数:

      private void Test(out List<ExampleClass> foo)
      

      您可能会将可空的 List&lt;T&gt; 与对值类型有效的 List&lt;T?&gt; 混淆...例如,您可以使用:

      private void Test(out List<Guid?> foo)
      

      这将是一个 out 参数,它是一个可为空的 guid 列表。

      另一方面,在 void 方法中使用 out 参数通常不太好 - 您通常应该将其用作返回类型。

      【讨论】:

      • 感谢乔恩。所示方法仅为示例,感谢您提供解释。
      【解决方案4】:

      List&lt;T&gt; 是一个引用类型(类),所以不需要?。只需将null 分配给方法体中的ExClass 参数即可。

      【讨论】:

      • 另一种方法是在列表或空列表中包含 0(零)个元素。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 2015-08-12
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多