Передача функции в качестве параметра функции - PullRequest
0 голосов
/ 19 февраля 2019

Unity C #, похоже, не распознает символ Func<> как делегат функции.Итак, как я могу передать функцию в качестве параметра функции?

У меня есть идея, что Invoke(functionName, 0) может помочь.Но я не уверен, действительно ли он мгновенно вызывает функцию или ждет конца кадра.Есть ли другой способ?

1 Ответ

0 голосов
/ 19 февраля 2019

Вы можете использовать Action, чтобы сделать это

using System;

// ...

public void DoSomething(Action callback)
{
    // do something

    callback?.Invoke();
}

и либо передать вызов метода, например

private void DoSomethingWhenDone()
{
    // do something
}

// ...

DoSomething(DoSomethingWhenDone);

, либо использовать лямбду

DoSomething(() =>
    {
        // do seomthing when done
    }
);

Вы также можете добавить параметры, например

public void DoSomething(Action<int, string> callback)
{
    // dosomething

    callback?.Invoke(1, "example");
}

и снова передать метод, такой как

private void OnDone(int intValue, string stringValue)
{
    // do something with intVaue and stringValue
}

// ...    

DoSomething(OnDone);

или лямбда

DoSomething((intValue, stringValue) =>
    {
        // do something with intVaue and stringValue
    }
);

В качестве альтернативы также см. Делегаты

и особенно для делегатов с динамическим числом параметров и типами Извлечение этого сообщения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...