Путь разработчика    

Использование именованные и необязательные параметры в C#


Дополнительные параметры - одно из немногих дополнений в последних версиях Visual Studio, которые действительно полезны. Обычно я пытаюсь опубликовать примеры в более старой версии C#, потому что кому-то легче переносить старый пример в более новую версию, чем переносить недавний пример в более старую версию. Большая часть языка C# осталась неизменной в течение длительного времени, так что это не проблема. Тем не менее, C# включает в себя несколько полезных функций, которые были добавлены относительно недавно.

Именованные и необязательные параметры были добавлены с C# 2010.

Именованные аргументы позволяют использовать имена параметров при вызове метода. Например, предположим, что класс Person имеет конструктор, который принимает параметры: name, address, email, sms_phone, voice_phone и fax. Тогда ваш код мог бы вызвать конструктор следующим образом:

Python

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

В то время как именованные аргументы дают некоторую выгоду, они действительно не так уж увлекательны, пока вы не объедините их с необязательными параметрами. Чтобы сделать параметр необязательным, следуйте ему со значением по умолчанию в объявлении метода. Например, в следующем коде показан конструктор класса Person с адресом, email, sms_phone, voice_phone и fax необязательно.

Python

Теперь программа может использовать следующий код для создания нового объекта Person, указывая только аргумент name (который требуется, поскольку он не имеет значения по умолчанию в объявлении конструктора) и аргумент email.

Python

Это не только удобно, но и дает вам новые возможности, которых у вас раньше не было. Предположим, вы хотите, чтобы конструктор требовал name, но не других параметров. Без дополнительных параметров вы можете создать несколько перегруженных версий конструктора, который принимает (name), который принимает (name, address), который принимает (имя, адрес, адрес электронной почты) и т. д.

Это позволит вам создавать объекты Person, опуская некоторые аргументы, но это не позволит вам опустить их в любой комбинации. Например, вы не можете указать name и email без address. Даже если вы захотели сделать перегруженные конструкторы для всех 32 возможных комбинаций (если я правильно подсчитал), компилятор не смог бы рассказать обо всех версиях, потому что все аргументы являются строками.

Именованные и необязательные параметры позволяют предоставлять и опускать аргументы в любой комбинации с одним конструктором.

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

Python

Это работает, но снова позволяет обрабатывать определенные комбинации пропущенных аргументов и требует много разных версий конструктора.

Другой подход состоял бы в том, чтобы позволить вызывающему коду передавать null или какое-либо другое значение для «опускать» аргументы, а затем заставлять код проверять каждый, чтобы увидеть, является ли это null как в следующем коде.

Python

Это намного более громоздко и неэффективно, чем использование названных и необязательных параметров.

Источник: http://csharphelper.com/blog/2017/10/use-named-and-optional-parameters-in-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Что такое механизм передачи параметров Python?

В терминах официальных Документация Python , аргументы передаются путем назначения в Python. Фактические параметры (аргументы) для вызова функции вводятся...

22 10 2019 20:33:23

Java 8. Полное руководство (Шилдт Герберт)

Книга Java 8. Полное руководство является исчерпывающим руководством по программированию на языке Java. В этом справочном пособии, полностью обновленном с...

21 10 2019 17:26:51

Оператор Java break и continue

Иногда желательно пропустить некоторые утверждения внутри цикла или немедленно завершить цикл, не проверяя тестовое выражение. В таких случаях мы можем исп...

20 10 2019 16:26:18

Преобразование растрового изображения в курсор в C#

Преобразование растрового изображения в курсор непросто, но вы можете сделать это, используя функцию API CreateIconIndirect. В этом примере используется сл...

19 10 2019 15:56:23

Треугольник Флойда и Треугольник Паскаля в C#

В этой статье мы напишем программу C# для печати треугольника Флойда и Треугольника Паскаля. Треугольник Флойда Вывод: Треугольник Паскаля Вывод:   Ис...

18 10 2019 13:13:20

Модификаторы доступа в Java

Одним из основных принципов объектно-ориентированного программирования является «скрытие информации», что означает, что объекты не раскрывают все их детали...

17 10 2019 5:56:53

Определите, является ли год високосным в C#

Обнаружение високосных лет в основном тривиально, потому что тип данных DateTime предоставляет метод IsLeapYear для этого. В примере используется следующий...

16 10 2019 21:19:46

Список поставщиков OLE DB, установленных в системе на C#

В этом примере показано, как вы можете указать поставщиков OLE DB, установленных в системе. ( Недавно мне пришлось запускать более старую программу в новой...

15 10 2019 22:42:28

Выделение текста в программе WPF с использованием C#

Обычно для отображения текста в WPF вы используете какой-то объект, такой как Label или TextBlock, но при необходимости вы можете нарисовать текст самостоя...

14 10 2019 13:21:18

Как вычислить и выделить значения DataGridView в C#

В этом примере показано, как вычислять и выделять значения DataGridView во время выполнения. Он использует следующий код для инициализации элемента управле...

13 10 2019 1:44:44

Ceкpeты JavaScript ниндзя (Джон Реэиг, Беэр Бибо)

Книга Секреты Javascript ниндзя раскрывает секреты мастерства разработки веб-приложений на Javascript. В книге Секреты Javascript ниндзя уделяется немало в...

12 10 2019 10:11:34

Почему Java не поддерживает перегрузку оператора?

Java не «нуждается» в перегрузке оператора, потому что это просто выбор, сделанный его создателями, которые хотели сохранить язык более простым. В отличие...

11 10 2019 17:53:15

Ошибка компиляции "Can not Find Symbol" в Java

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

10 10 2019 7:11:52

Оператор yield в C#

Перечисление представляет собой последовательность значений, которые программа может перечислить, например, используя цикл foreach. В C# вы можете использо...

09 10 2019 21:39:58

Нарисуйте анимированный атом в C#

Когда срабатывает Timer формы, его обработчик события Tick обновляет форму, чтобы принудительно выполнить перерисовку. Обработчик события Paint формы рисуе...

08 10 2019 7:57:55

Как объекты становятся пригодными для сбора мусора в Java?

Объект не станет кандидатом на сбор мусора, пока все ссылки на него не будут отброшены. Объект отмечен как имеющий право на сбор мусора, когда он больше не...

07 10 2019 12:38:39

Что такое компилятор Just-In-Time (JIT) в Java?

Компилятор Just-In-Time (JIT) является компонентом JRE (Java Runtime Environment), который повышает производительность приложений Java во время выполнения....

06 10 2019 19:18:26

Слияние заставки и видео в каталоге в C#

( Обратите внимание, что этот пример был написан в Visual Studio 2010.) В этом примере показано, как вы можете объединять заставки и видео в каталоге. Приме...

05 10 2019 19:58:37

Есть ли инструмент для поиска ошибок или выполнения статического анализа?

PyChecker - это инструмент для поиска ошибок в исходном коде python. Он обнаруживает проблемы, которые обычно попадают в компилятор для менее динамических...

04 10 2019 9:39:36

Сделайте CAPTCHA изображения в C#

CAPTCHA (полностью автоматизированный публичный тест Тьюринга, чтобы рассказать о компьютерах и людях) - это искаженные изображения слов, которые некоторые...

03 10 2019 20:17:52

Словарь (Dictionary) в Python

Словарь представляет собой тип данных похож на массивы, но работает с ключами и значениями вместо индексов. Словари в Python также называются «сопоставлени...

02 10 2019 15:37:35

Разница между памятью Stack and Heap в Java

Модель Java Heap и Stack Memory определяет, как и когда разные потоки могут видеть значения, записанные в общие переменные другими потоками, и как синхрони...

01 10 2019 4:10:22

Являются ли полиморфизм, перегрузка и переопределение аналогичных понятий?

Перегрузка - это действие определения нескольких методов с тем же именем, но с разными параметрами. Переопределяющее средство переопределяет тело метода су...

30 09 2019 5:44:58

Eclipse

Eclipse — бесплатная IDE модульных кроссплатформенных приложений. В первую очередь служит для разработки расширений, в чем и заключается главное её преимущ...

29 09 2019 18:14:26

Как сделать метафайл в C#

Пример Отображение метафайла Windows (wmf) в C# < / a> объясняет, как отображать метафайл и почему метафайлы могут давать лучшие результаты, чем растровые...

28 09 2019 4:45:38

Выбор языка программирования: 6 пунктов при выборе своего языка

Выбор языков программирования достаточно широк, но вы можете найти подходящий для вас и изучить его, если поразмыслите над следующими пунктами. 1. Определи...

27 09 2019 5:26:16

Break и Continue в Python

Иногда желательно пропустить некоторые утверждения внутри цикла или немедленно завершить цикл, не проверяя тестовое выражение. В таких случаях мы можем исп...

26 09 2019 17:29:27

Разрешить ограниченный выбор CheckBox в C#

Обычно пользователь может проверить или снять флажок CheckBox независимо от других параметров. Это сообщение показывает, как вы можете разрешить ограниченн...

25 09 2019 1:31:59

Случайные числа в Python

Случайный модуль реализует генераторы псевдослучайных чисел для различных распределений. Функции, предоставляемые этим модулем, являются фактически связанн...

24 09 2019 2:33:47

Разница между Java и JavaScript?

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

23 09 2019 2:34:59

Метод Contains() в Java

Java String contains()- метод чтобы проверить, содержит ли String указанную последовательность символов. Этот метод возвращает логический тип данных, котор...

22 09 2019 10:39:10

Сортировка и поиск массивов в C#

Класс Array предоставляет несколько полезных методов работы с массивами. Два из них позволяют сортировать и искать массивы. В следующем коде показано, как...

21 09 2019 6:16:36

Ключевые слова в Python

Ключевые слова - зарезервированные слова в Python. Это зарезервированные слова, и мы не можем использовать ключевое слово в качестве имени переменной, имен...

20 09 2019 15:13:54

Пройти по значению или пройти по ссылке? JavaScript

В JavaScript у нас есть функции, и у нас есть аргументы, которые мы передаем этим функциям. Но как JavaScript обрабатывает то, что вы проходите, не всегда...

19 09 2019 17:49:53

Простой Python. Современный стиль программирования. (Билл Любанович)

Эта книга идеально подходит как для начинающих программистов, так и для тех, кто только собирается осваивать Python, но уже имеет опыт программирования на...

18 09 2019 9:57:41

Ассемблер - это просто. Учимся программировать. (Калашников О. А.)

Подробно и доходчиво объясняются все основные вопросы программирования на ассемблере. Рассмотрены команды процессоров Intel, 16- и 32-разрядные регистры, о...

17 09 2019 19:28:36

Web Scraping в Python?

Web Scraping - это метод компьютерного программного обеспечения для извлечения информации с веб-сайтов. Этот метод в основном фокусируется на преобразовани...

16 09 2019 8:30:17

1С:Предприятие. Конфигурирование и администрирование для начинающих (Владимир Дубянский)

В книге 1 С: Предприятие. Конфигурирование и администрирование для начинающих описаны основные приемы программирования и конфигурирования, общие для всех ком...

15 09 2019 1:29:30

Как записать write() в файл Python

После изучения того, как открыть и закрыть файл в Python , откройте файл, тогда мы напишем в него случайный текст с помощью метода write() . Чтобы записать...

14 09 2019 8:37:30

Как избежать использования данных класса, совместно используемых экземплярами в Python?

Атрибуты класса - это атрибуты, которые принадлежат самому классу. Они будут использоваться всеми экземплярами класса. Поэтому они имеют одинаковое значени...

13 09 2019 16:59:19

Языки программирования низкого уровня: низкоуровневые языки

Языки программирования низкого уровня или низкоуровневые традиционно появились первыми и в последующем стали базисом для развития всей И Т индустрии....

12 09 2019 13:17:25

Нарисуйте прокладку Аполлония в C#

Пример Найти круги, которые касаются трех заданных кругов (проблема Аполлония) в C# , показывают, как найти до восьми кругов, которые касаются трех заданны...

11 09 2019 1:38:53

Определение и использование бит-маски в C#

Пример Понимание бит-масок в C# объясняет, как использовать бит маски. Чтобы определить битовую маску, просто создайте enum и присвойте ему атрибут Flags,...

10 09 2019 0:41:41

Delphi в примерах, играх и программах (Валерий Рубанцев)

В январе 2011 года в питерском издательстве Наука и техника вышла книга Валерия Рубанцева "Delphi в примерах, играх и программах". К сожалению, в ней не на...

09 09 2019 3:59:35

Разница между substr() и substring() в JavaScript

Строка JavaScript представляет собой объект, который представляет последовательность символов. Метод substr() извлекает части строки, начиная с символа в у...

08 09 2019 1:33:42


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69