Синтаксис C #: где TResponse, new () - PullRequest
3 голосов
/ 15 марта 2012
public TResponse ExecuteCustomMessage<TResponse>(IModbusMessage request)
    where TResponse : IModbusMessage, new()

что означает вышеперечисленное?Я никогда не видел ничего подобного раньше, хотя я уже несколько лет кодирую на C # ... Предполагается, что это функция, но я не уверен, что это такое <> и ключевое слово where и new ()в конце ...

Ответы [ 4 ]

9 голосов
/ 15 марта 2012

Это ограничение для универсального типа TResponse, которое реализует интерфейс IModbusMessage и имеет конструктор без параметров.

, где T: (имя интерфейса) Аргумент типа должен быть или реализовывать указанный интерфейс.Можно указать несколько ограничений интерфейса.Ограничительный интерфейс также может быть универсальным.

где T: new () Аргумент типа должен иметь открытый конструктор без параметров.При использовании в сочетании с другими ограничениями, ограничение new () должно указываться последним.

Кроме того, как уже отмечали другие, я рекомендую вам прочитать общие документы (на которые указывает SLaks в комментариях)).

4 голосов
/ 15 марта 2012

Где: new () - ограничение конструктора Generics

Параметр универсального типа TResponse должен поддерживать открытый конструктор по умолчанию.

проверьте это для деталей http://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx

4 голосов
/ 15 марта 2012

Это означает, что TResponse должен иметь тип, реализующий интерфейс IModbusMessage

и new() подразумевает предоставление конструктора по умолчанию без параметров.

Я думаю, вам лучше начатьпрочесть о Дженерикс

2 голосов
/ 15 марта 2012

это универсальный метод. Определяет тип или семейство объектов, с которыми метод может работать. Предложение where является ограничением, в котором говорится, что TReponse должен реализовывать интерфейс IModbusMessage, и что его необходимо создавать с помощью нового ключевого слова.

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