programing

반환 유형이 없는 함수 대리자

batch 2023. 5. 6. 14:11
반응형

반환 유형이 없는 함수 대리자

모든 Func 딜러가 값을 반환합니다.는 무엇입니까?무효를 반환하는 방법과 함께 사용할 수 있는 NET 대리인은?

모든 Func 딜러가 무언가를 반환하고 모든 조치 딜러가 무효로 반환합니다.

Func<TResult>인수를 사용하지 않고 TResult를 반환합니다.

public delegate TResult Func<TResult>()

Action<T>하나의 인수를 사용하고 값을 반환하지 않습니다.

public delegate void Action<T>(T obj)

Action가장 단순한 '최소한의' 대리자입니다.

public delegate void Action()

또 있습니다.Func<TArg1, TResult>그리고.Action<TArg1, TArg2>(최대 16개의 인수).이 모든 것( 제외)Action<T>)가 처음입니다.NET 3.5(시스템에 정의됨).코어).

인수를 사용하지 않고 void 반환 유형이 있습니까?

믿어요Action이것에 대한 해결책입니다.

모든 Func 딜러가 하나 이상의 매개 변수를 사용합니다.

그렇지 않아요.모두 하나 이상의 형식 인수를 사용하지만 이 인수에 따라 반환 형식이 결정됩니다.

그렇게Func<T>매개 변수를 사용하지 않고 값을 반환합니다.사용하다Action또는Action<T>값을 반환하지 않으려는 경우

해라System.Func<T>그리고.System.Action

반환 및 반환되지 않는 값 서브루틴을 호출하는 매우 쉬운 방법입니다.각각 Func 및 Action사용하고 있습니다.(https://msdn.microsoft.com/en-us/library/018hxwa8(v=vs.110).aspx) 참조)

이 예제를 사용해 보십시오.

using System;

public class Program
{
    private Func<string,string> FunctionPTR = null;  
    private Func<string,string, string> FunctionPTR1 = null;  
    private Action<object> ProcedurePTR = null; 



    private string Display(string message)  
    {  
        Console.WriteLine(message);  
        return null;  
    }  

    private string Display(string message1,string message2)  
    {  
        Console.WriteLine(message1);  
        Console.WriteLine(message2);  
        return null;  
    }  

    public void ObjectProcess(object param)
    {
        if (param == null)
        {
            throw new ArgumentNullException("Parameter is null or missing");
        }
        else 
        {
            Console.WriteLine("Object is valid");
        }
    }


    public void Main(string[] args)  
    {  
        FunctionPTR = Display;  
        FunctionPTR1= Display;  
        ProcedurePTR = ObjectProcess;
        FunctionPTR("Welcome to function pointer sample.");  
        FunctionPTR1("Welcome","This is function pointer sample");   
        ProcedurePTR(new object());
    }  
}

때때로 이벤트 처리를 위해 대리자를 작성하고 싶을 수 있습니다. 이 경우 유형의 인수를 암시적으로 수락하는 이점을 활용할 수 있습니다.objectEventHandlers에서 파생되어야 하는 두 번째 매개 변수에 추가하여void

저는 개인적으로 함수 본문에서 일회성 콜백을 만들기 위한 테스트를 하는 동안 이것이 유용하다는 것을 알게 되었습니다.

인수를 사용하지 않고 void 반환 유형이 있습니까?

다음을 위해 글을 쓰는 경우System.Windows.Forms다음을 사용할 수도 있습니다.

public delegate void MethodInvoker()

언급URL : https://stackoverflow.com/questions/917551/func-delegate-with-no-return-type

반응형