2010-02-08 103 views
4

这可能吗?Nullable List <>作为输出参数

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

} 

可空列表<>这也是out参数?

+0

由于您已经编写了代码,为什么不自己尝试呢? – stakx 2011-08-28 12:15:00

回答

20

List<T>是一个参考类型(类),所以没有?是必需的。只需在方法体中分配nullExClass参数。

+0

另一种方法是在列表或空列表中包含0(零)个元素。 – Sharique 2011-10-31 11:38:34

9

安东说,你并不需要使用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参数 - 您通常应该将其用作返回类型。

+0

感谢乔恩。所示的方法只是一个例子,并感谢您提供解释。 – Trent 2010-02-08 11:17:10

2

使用?仅用于可为空的ValueTypes。

0

作为out参数与否与此无关。但是你不能在课堂上做一个Nullable<T>; T必须是一个结构。否则编译器会抱怨。

除此之外,大写参数名称(使用exClass而不是ExClass)被认为是不好的样式。你的程序工作原理是一样的,但任何读你代码的人都可能被误导。

相关问题