Soru Yeni Func ile void dönüş türlerini kullanma


Bu örnek işlevini çağıran kodumda anonim temsilci kullanıyorum:

public static int TestFunction(int a, int b) {
    return a + b;
}

Temsilci şöyle görünüyor:

var del = new Func<int, int, int>(TestFunction);

Sorum şu: nasıl bir void için dönüş tipi TResult? Aşağıdakiler işe yaramıyor:

public static void OtherFunction(int a, string b) { ... }
var del = new Func<int, string, void>(OtherFunction);

25
2017-11-22 10:18


Menşei




Cevaplar:


Dönüş türü yoksa, istediğiniz Action<int,string>:

var del = new Action<int, string>(OtherFunction);

ya da sadece:

Action<int, string> del = OtherFunction;

43
2017-11-22 10:19





Boşluk vermek istiyorsanız Eylem <T> 'i kullanmalısınız.


7
2017-11-22 10:21





Bir şeyleri iade etmek istemiyorsanız Eylem <T> 'e ihtiyacınız var


3
2017-11-22 10:24





Herhangi bir dönüş değerine gerek duymazsanız Func yerine Action kullanın

    public void InvokeService<T>(Binding binding, string endpointAddress, Action<T> invokeHandler) where T : class
    {
        T channel = FactoryManager.CreateChannel<T>(binding, endpointAddress);
        ICommunicationObject communicationObject = (ICommunicationObject)channel;

        try
        {
            invokeHandler(channel);
        }
        finally
        {
            try
            {
                if (communicationObject.State != CommunicationState.Faulted)
                {
                    communicationObject.Close();
                }
            }
            catch
            {
                communicationObject.Abort();
            }
        }
    }

0
2017-11-27 10:00