2010-02-08 9 views
4

가능합니까?Nullable List <> out 매개 변수로

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

} 

출력 매개 변수 인 nullable List <>

+0

코드를 작성 했으므로 직접 시도하지 않은 이유는 무엇입니까? – stakx

답변

20

List<T>은 참조 유형 (클래스)이므로 ?은 필요하지 않습니다. 메소드 본문의 nullExClass 매개 변수를 지정하면됩니다.

+0

또 다른 방법은 목록 또는 빈 목록에 0 개의 요소가있는 것입니다. – Sharique

9

안톤은 Nullable<T>를 사용할 필요가 없습니다, 말했듯이 -하지만 확실히 out 매개 변수가 될 수 :

private void Test(out List<ExampleClass> foo) 

그것은 당신이 유효 할 것입니다 이는 List<T?>으로 널 (NULL) List<T>을 혼동하고 가능 값 유형 ... 예를 들어 다음과 같이 사용할 수 있습니다.

nullable guid 목록 인 out 매개 변수입니다.

반면에 void 메서드에는 out 매개 변수를 사용하는 것이 일반적으로 좋지 않습니다. 대신 일반적으로 반환 유형으로 사용해야합니다.

+0

Jon에게 감사드립니다. 제시된 방법은 단지 예일 뿐이며 설명을 해주셔서 감사합니다. – Trent

2

nullable ValueTypes에 대해서만 ?을 사용하십시오.

0

out 매개 변수는 여기에 관계가 없습니다. 하지만 클래스로 Nullable<T>을 만들 수는 없습니다. T은 구조체 여야합니다. 그렇지 않으면 컴파일러가 불평 할 것이다.

이 외에도 매개 변수의 이름을 대문자로 사용하는 것은 좋지 않은 스타일입니다 (ExClass 대신 exClass 사용). 프로그램은 동일하게 작동하지만 코드를 읽는 사람은 누구나 오도 될 수 있습니다.

관련 문제