Что “это” означает при использовании в качестве префикса для параметров метода?

int a=1000;
printf("%d",printf("\n%d",a));

В этом фрагменте кода есть 2 функции printf ():

  1. inner printf ()
  2. external printf ()

Сначала выполнится внутренняя функция printf () и напечатает 1000, а затем выполнится внешняя функция printf ().

Следует отметить, что printf() возвращает число символов, которые он печатает и , escape-последовательности подсчитываются как символ в printf ().

Таким образом, выполняя внутреннюю функцию printf (), мы получили 5 (потому что '\ n', 1, 0, 0, 0 - 5 символов) Теперь, когда выполняется внешняя функция printf (), 5 напечатано.

6
задан Colin Burnett 9 June 2009 в 20:56
поделиться

5 ответов

Это новая функция C # 3.0, которая называется метод расширения .

Это означает, что вы добавляете новый метод к своим объектам ModelStateDictionary. Вы можете вызвать его как обычный метод:

yourModelStateDictionary.AddRuleViolations( errors );

Видите, что первый параметр (параметр this) пропускается. Он назначает только ModelStateDictionary в качестве допустимой цели для вашего метода расширения.

Подсказка состоит в том, что вы можете сделать это с любым классом - даже с запечатанными или сторонними классами, такими как классы .Net framework (например, для объекта или строки).

17
ответ дан 8 December 2019 в 12:22
поделиться

Это сигнатура метода расширения, это означает "AddRuleViolations" будет рассматриваться как метод расширения ModelStateDictionary.

Из MSDN.

Методы расширения позволяют «добавлять» методы для существующих типов без создание нового производного типа, перекомпиляция или иное изменение исходный тип. Методы расширения особый вид статического метода, но их называют так, как если бы они были методы экземпляра для расширенного типа. Для клиентского кода, написанного на C # и Visual Basic, очевидного нет разница между вызовом метод расширения и методы, которые фактически определены в типе.

1
ответ дан 8 December 2019 в 12:22
поделиться

Это означает, что рассматриваемый метод является «методом расширения» и может быть вызван, как если бы он был методом самого класса. См. Эту статью .

1
ответ дан 8 December 2019 в 12:22
поделиться

Он добавляет метод расширения ко всем экземплярам ModelStateDictionary.

0
ответ дан 8 December 2019 в 12:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: