Тип функции, которая получает тип params в качестве параметра - PullRequest
0 голосов
/ 14 января 2019

- Под редакцией -

Я написал следующую функцию -

 public static int params1(params int [] x) {
        return 1;
    }

Я хотел бы передать эту функцию другой функции в качестве параметра, подобного этому, но это ошибка компиляции -

    public static int Foo(Func<params int [], int> myMethodName) {
           return 1; 
}

Как мне передать эту функцию в функцию Foo?


На самом деле, я должен был описать мою проблему более подробно -

Я сделал то, что вы мне написали, но заметил, что если я определяю параметр как params, то я вызываю функцию без этого, проблем нет.

Это новый код -

 public static int params1(params int [] x) {
    return 1;
}

        public static int Foo(Func<int [], int> myMethodName) {
           return myMethodName(); 
}

В этом коде есть ошибка компиляции (потому что он должен получить параметр, тип которого int []), как я могу это решить?

1 Ответ

0 голосов
/ 14 января 2019

Ваш вопрос может задавать одну из следующих вещей:

  1. Если вы просто пытаетесь передать params1 в Foo, удалите слово params из объявления Foo:

    public static int Foo(Func<int [], int> myMethodName) {
        return 1; 
    }
    
  2. Если вы хотите, чтобы Foo мог звонить myMethodName следующим образом:

    myMethodName(1, 2, 3);
    

    Тогда вам нужен пользовательский делегат:

    public delegate int CustomDelegate(params int[] parameters);
    
  3. Если вы хотите, чтобы только методы, которые принимают параметр params, передавались в Foo, то, насколько я знаю, сделать это невозможно.

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