2011-01-13 3 views
2

맞아, C#의 Properties에 대한 기본값을 초기화하는 코드 조각이있다. 출처 : ApplyDefaultValues에 객체를 제공하는 것은 물론 작동나는 꽤 이해하지 못한다. (setter = (o) => {};)

http://www.codeproject.com/KB/dotnet/DefValInit.aspx 지금 내가 슬프게 확장을 지원하지 않는 코드, C++로 다시 있지만했습니다. 나는 C++로 재 작성 할 수 없습니다

한 줄이 표현을 포함하는 라인입니다

setter = (o) => { }; 

누군가가이 행이 무엇을 알고 있는지 알고 싶습니다. 구글은 어떤 결과

+2

유형 조치의 뭔가 종류의 null 객체를하지 않습니다이 경우

Action<object> setter = (o) => { }; setter(new object()); 

, 그래서 C++ 메커니즘을 사용하여 .NET 대리자를 나타낼 수 있습니까? – AakashM

+0

사실이 코드 조각은 내가 게시 한 codeproject (zip 파일에 있음)의 링크에서 C#입니다. C#에서 C++/CLI에 이르기까지 모든 것을 다시 작성하여 C++/CLI 공용 라이브러리에서 사용했습니다. –

+0

염소 새끼들과 싸늘합니다! – Axeman

답변

4

세터를 하나의 매개 변수를 사용하지 않고 수행하는 람다 함수를주지 않았다 "이이 코드를 호출 할 수 있습니다 : 함수가 아무것도, 당신이 C++/CLI에 대해 이야기하지 않을 같은데요

+0

맞아, 나는 생각한다. (o)는 람다 함수의 매개 변수/인자 목록이고, {}는 몸일 것인가? setter (new Object())를 호출하면됩니다. setter에 아무 것도 할당하지 않으면 오류가 발생하지 않습니다. –

+0

인수와 본문에 대한 수정. 그러나 setter에 아무 것도 지정하지 않으면 실제로 null 참조 예외가 발생합니다. 따라서 "Null object"패턴. 당신은 그것을 호출 할 수 있습니다. 예외는 없습니다. null을 검사 할 필요가 없으며 부작용이 발생하지 않습니다. – flq

+0

그래, 고마워. 알았다 ;-) –

1

그것은 오 그것은 람다하는 "기능입니다 T 형식의 인스턴스 유형 Action<T>, 될 것 아무것도에게

관련 문제