【发布时间】:2011-01-14 08:01:45
【问题描述】:
这可能吗?
private void Test(out List<ExampleClass>? ExClass)
{
}
一个可以为空的 List 也是一个 out 参数?
【问题讨论】:
-
既然已经写好了代码,为什么不自己尝试一下呢?
这可能吗?
private void Test(out List<ExampleClass>? ExClass)
{
}
一个可以为空的 List 也是一个 out 参数?
【问题讨论】:
是否是out 参数在这里无关紧要。但是你不能用一个类来创建Nullable<T>; T 必须是一个结构。否则编译器会报错。
除此之外,将参数名称大写(使用exClass 而不是ExClass)被认为是不好的风格。您的程序会以同样的方式运行,但任何阅读您的代码的人都可能会被误导。
【讨论】:
仅将? 用于可空值类型。
【讨论】:
正如 Anton 所说,您不需要使用 Nullable<T> - 但它当然可以是 out 参数:
private void Test(out List<ExampleClass> foo)
您可能会将可空的 List<T> 与对值类型有效的 List<T?> 混淆...例如,您可以使用:
private void Test(out List<Guid?> foo)
这将是一个 out 参数,它是一个可为空的 guid 列表。
另一方面,在 void 方法中使用 out 参数通常不太好 - 您通常应该将其用作返回类型。
【讨论】:
List<T> 是一个引用类型(类),所以不需要?。只需将null 分配给方法体中的ExClass 参数即可。
【讨论】: