Необов’язкові параметри і іменовані аргументи в C # 4

Це сімнадцята статті з серії, яка присвячена виходу VS 2010 і. NET 4.


Сьогоднішній пост торкнеться теми нових можливостей мови, доданих в C # 4.0 – необов’язкові параметри і іменовані аргументи, а ще крутий спосіб використання необов’язкових параметрів в ASP.NET MVC 2.


Необов’язкові параметри


C # 4.0 підтримує необов’язкові параметри в методах, конструкторах і індексатор (VB вмів таке вже давним-давно).


Параметри є необов’язковими, коли присутній в оголошенні значення за замовчуванням. Наприклад, нижче представлений метод, який приймає два параметри: рядковий параметр “category” і цілочисельний “PageIndex”. Параметр “pageIndex” має значення за замовчуванням рівне 0 і тому є необов’язковим параметром:


image


Коли викликаєте вище наведений метод, то ми можемо передати явно два параметри:


image


Або ж опустити другу необов’язковий параметр, в даному випадку буде передано значення за умовчанням 0:


image


Зверніть увагу, IntelliSense в VS 2010 вказує, що параметр є необов’язковим, а також його значення за замовчуванням:


image


Іменовані аргументи і необов’язкові параметри в C # 4.0


C # 4.0 також підтримує концепцію іменованих параметрів. Що дозволяє явно вказувати ім’я переданого в метод параметра, замість ідентифікації його по положенню.


Наприклад, я можу написати код, як показано нижче, явно визначаючи другий аргумент в метод GetProductsByCategory по імені:


image


Іменовані аргументи досить зручні, коли метод підтримує кілька необов’язковим параметрів і ви хочете явно вказати, які аргументи передати. Наприклад, нижче, у нас є метод DoSomething, які приймає два необов’язкові параметри:


image


Ми можемо використовувати іменовані аргументи для виклику методу будь-яким перерахованим способом:


image


Так як обидва параметри є необов’язковими, і в разі коли вказується один або нуль аргументів, передається значення за замовчуванням для не зазначеного аргументу.


ASP.NET MVC 2 і необов’язкові параметри


Давайте розглянемо один цікавий сценарій, коли ми можемо використовувати необов’язкові параметри в ASP.NET MVC 2 зв’язку з методами дій в класах контролерах.


Наприклад, ми хочемо прив’язати такі URL-адреси, як “Products / Browse / Beverages” або “Products / Browse / Deserts” до методу дії контролера. Ми можемо реалізувати це написавши URL-маршрутизатор, який пов’язує URL-адреси з методом:


image


Ми можемо і використовувати значення необов’язкового параметра рядка запиту “page”, а можемо і проігнорувати його, для відображення результату методу Browse, яке виводить результат по сторінкам. Наприклад, /Products/Browse/Beverages?page=2.


У ASP.NET MVC 1 ви, як зазвичай, обробляли даний сценарій додавши в метод дії параметр “page” і встановивши йому значення null (якщо параметр “page” не буде присутній в рядку запиту, то буде переданий null). Далі ви можете написати код, що конвертує null в int і привласнити його значенням за умовчанням, якщо не був переданий в рядок запиту:


image


C ASP.NET MVC 2 ви можете використовувати необов’язкові параметри, підтримувані в VB і C # для більш короткої та чіткої реалізації. Досить оголосити параметр методу дії, як необов’язковий з значенням за замовчуванням:


C#


image


VB


image


Якщо значення “page” присутній у рядку запиту (/ Products / Browse / Beverages? Page = 22), тоді воно буде передано в метод дії, як ціле число. Якщо ж значення “page” відсутня в рядку запиту (/ Products / Browse / Beverages), тоді в метод дії буде передано значення за замовчуванням, рівне 0. Що робить код трохи більш стислим і читабельним.


Підсумки


З’явилося досить багато нових можливостей в C # і VB. Вищеописані дві всього лише мала частина з них.


Якщо ви шукаєте гарну книжку, яка містить опис усіх нових можливостей в C # (включаючи C # 4.0), а також опис основний бібліотек. NET класів, то почитайте нещодавно вийшла книгу O “Reilly” C # 4.0 in a Nutshell


image

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*