programing

인수 없이 펑크를 무효화하다

closeapi 2023. 4. 21. 20:53
반응형

인수 없이 펑크를 무효화하다

비슷한 질문들이 몇 개 있지만 정확히는 나와 같지 않다.

반환값(즉, 보이드)이 없는 함수와 매개변수가 없는 함수에 해당하는 Func가 있습니까?

관련 질문은 Func가 아무것도 반환하지 않는가? 그러나 이것은 void 타입에 대한 답변이 아니다.

(내 뷰 모델에서 내 뷰로 액션을 요청하기 위해 필요합니다.)

당신의 표현은 혼란스러워요."반환 유형 및 매개 변수가 없는 함수"를 의미할 수 있습니다.단순한 시스템이 있습니다.액션.

Action action = () => Console.WriteLine("hello world");
action();

코멘트 내용:

하지만 제가 기입해야 할 것은<T>[액션]을 입력하면 무효가 됩니다(질문을 수정하겠습니다.실수를 했습니다).

이것은 오해를 나타내고 있습니다.액션 위임의 T는 입력입니다.보이드는 출력입니다.액션 딜러는 본질적으로 무효를 반환하는 딜러입니다.T는 동작할 수 있는 입력 유형으로 인수와 함께 지정할 수 있는 파라미터입니다.

어쨌든 이 답변과 다른 답변에서 알 수 있듯이 T 없이 작업 위임자를 사용할 수 있으며 입력을 받지 않는 위임자를 사용할 수 있습니다.

네, 다른 과부하가 있습니다.Action다른 수의 입력 매개 변수를 가져다가, 이 매개 변수를 갖는 경우voidreturn type 입니다.

Action               public delegate void Action()
Action<T>            public delegate void Action<T>(T obj)
Action<T1,T2>        public delegate void Action<T1,T2>(T1 arg1, T2 arg2)
Action<T1,T2,T3>     public delegate void Action<T1,T2,T3>(T1 arg1, T2 arg2, T3 arg3)
...

첫 번째 줄은 당신이 찾고 있는 것입니다.

새로운 Framework 버전에서는 더 많은 인수로 오버로드가 추가되었습니다.최대 인수 수:

  • .NET Framework 2.0 : 1
  • .NET Framework 3.5: 4
  • .NET Framework 4.0: 16
  • 실버라이트: 16

액션에는 항상voidreturn type 입니다.avoid반환 유형은 일반 형식 매개 변수로 지정할 필요가 없으며 지정할 수도 없습니다.반면,Func딜러는 "실제" 반환 유형을 정의하고 반환 유형에 대해 적어도 하나의 일반 유형 매개 변수를 항상 가집니다.여기를 참조해 주세요.

Func<TResult>           public delegate TResult Func<TResult>()
Func<T,TResult>         public delegate TResult Func<T,TResult>(T arg)
Func<T1,T2,TResult>     public delegate TResult Func<T1,T2,TResult>(T1 arg1, T2 arg2)
...

.NET Framework 4.0이 추가되었습니다.in그리고.out부정 및 공분산을 위한 일반 유형 매개 변수에 대한 수정자.자세한 내용은 제네릭스의 공분산반분산 항목을 참조하십시오.예:

public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2)

public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2)

당신이 찾고 있는 것은 액션입니다.매개 변수를 사용하지 않고 값을 반환하지 않습니다.

언급URL : https://stackoverflow.com/questions/9244989/void-func-without-arguments

반응형