Net framework 5, а также среды Visual Studio 2012 и C#


Правила использования параметров



Download 6,27 Mb.
Pdf ko'rish
bet179/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   175   176   177   178   179   180   181   182   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

Правила использования параметров
Определяя метод, задающий для части своих параметров значения по умолчанию, 
следует руководствоваться следующими правилами:
‰
Значения по умолчанию указываются для параметров методов, конструкторов 
методов и параметрических свойств (индексаторов C#). Также их можно ука-
зывать для параметров, являющихся частью определения делегатов. В резуль-
тате при вызове этого типа делегата аргументы можно опускать, используя их 
значения по умолчанию.
‰
Параметры со значениями по умолчанию должны следовать за всеми остальными 
параметрами. Другими словами, если указан параметр со значением по умолчанию, 
значения по умолчанию должны иметь и все параметры, расположенные справа от 
него. Например, если при определении метода 
M
удалить значение по умолчанию 
(
"A"
) для параметра 
s
, компилятор выдаст сообщение об ошибке. Существует 
только одно исключение из правил — параметр массива, помеченный ключевым 
словом 
params
(о котором мы подробно поговорим чуть позже). Он должен рас-
полагаться после всех прочих параметров, в том числе имеющих значение по 
умолчанию. При этом сам массив значения по умолчанию иметь не может.
‰
Во время компиляции значения по умолчанию должны оставаться неизменными. 
То есть задавать значения по умолчанию можно для параметров примитивных 
типов, перечисленных в табл. 5.1 главы 5. Сюда относятся также перечисли-
мые типы и ссылочные типы, допускающие присвоение значения 
null
. Для 
параметров произвольного значимого типа значение по умолчанию задается 
как экземпляр этого типа с полями, содержащими нули. Можно использовать 
как ключевое слово 
default
, так и ключевое слово 
new
, в обоих случаях генери-


247
Необязательные.и.именованные.параметры
руется одинаковый IL-код. С примерами обоих вариантов синтаксиса мы уже 
встречались в методе 
M
при задании значений по умолчанию для параметров 
dt
и 
guid
соответственно.
‰
Запрещается переименовывать параметрические переменные, так как это влечет 
за собой необходимость редактирования вызывающего кода, который передает 
аргументы по имени параметра. Скажем, если в объявлении метода 
M
переиме-
новать переменную 
dt
в 
dateTime
, то третий вызов метода станет причиной по-
явления следующего сообщения компилятора (ошибка CS1739: в подходящей 
перегруженной версии 
'M'
отсутствует параметр с именем 
'dt'
):
"error CS1739: The best overload for 'M' does not have a parameter 
named 'dt'
‰
При вызове метода извне модуля изменение значения параметров по умолчанию 
является потенциально опасным. Вызывающая сторона использует значение 
по умолчанию в процессе работы. Если изменить его и не перекомпилировать 
код, содержащий вызов, в вызываемый метод будет передано прежнее значение. 
В качестве индикатора поведения можно использовать значение по умолчанию 
0 или 
null
. В результате исчезает необходимость повторной компиляции кода 
вызывающей стороны. Вот пример:
// Не делайте так:
private static String MakePath(String filename = "Untitled") {
return String.Format(@"C:\{0}.txt", filename);
}
// Используйте следующее решение:
private static String MakePath(String filename = null) {
// Здесь применяется оператор, поддерживающий
// значение null (??); см. главу 19
return String.Format(@"C:\{0}.txt", filename ?? "Untitled");
}
‰
Для параметров, помеченных ключевыми словами 
ref
или 
out
, значения по 
умолчанию не задаются.
Существуют также дополнительные правила вызова методов с использованием 
необязательных или именованных параметров:
‰
Аргументы можно передавать в произвольном порядке; но именованные аргу-
менты должны находиться в конце списка.
‰
Передача аргумента по имени возможна для параметров, не имеющих значения 
по умолчанию, но при этом компилятору должны быть переданы все аргументы, 
необходимые для компиляции (c указанием их позиции или имени).
‰
В C# между запятыми не могут отсутствовать аргументы. Иначе говоря, запись 
M(1, ,DateTime.Now)
недопустима, так как ведет к нечитабельному коду. Что-
бы опустить аргумент для параметра со значением по умолчанию, передавайте 
аргументы по именам параметров.
‰
Вот как передать аргумент по имени параметра, требующего ключевого слова 
ref
/
out
:


248
Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   175   176   177   178   179   180   181   182   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish