using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Delegates
{
    // Kod umieszczony w komentarzu gdyż pokazuje składowe delegatów. Ten kod nie jest 
    // przeznaczony do kompilacji.
    // Listing 9-21
    //public Predicate(object target, IntPtr method);

    //public bool Invoke(T obj);

    //public IAsyncResult BeginInvoke(T obj, AsyncCallback callback, object state);
    //public bool EndInvoke(IAsyncResult result);

    class Examples21_22
    {
        // Listing 9-22
        public static void CallMeRightBack(Predicate<int> userCallback)
        {
            bool result = userCallback.Invoke(42);
            Console.WriteLine(result);
        }

        public static void DirectCall()
        {
            CallMeRightBack(x => x == 42);
        }
    }
}
