Добавил:
2200 7008 9480 6099 TKFF БЛАГОДАРНОСТЬ МОЖНО ТУТ ОСТАВИТЬ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ 2025 / 4 курса_МТУСИ / 1 КУРС / Информатика / С# для чайников - Мюллер.pdf
Скачиваний:
0
Добавлен:
04.06.2025
Размер:
53.3 Mб
Скачать

Возврат значения оператором return

 

519N--44-8N0L--

50

8-41Bп-д-N4-

п--IBп0N-8-4Bп515j-йB 4-l-Lr

ш-r 8-п-N 9-n950

1rB5-N4--n40 -41-

-5-N044S-д8j 05

j8-йм-9

t

44

 

01N

 

-4N

 

9

57N

88N

-4

 

B

 

4 4 В -IN

- - N

1

5-tN-9B-

--l50п1п- 9418041-40й-

п-8-п-N -l

9Н-С40I

 

 

 

к к

п1к

к-5-N18-4-8 8-п-N0jI0nS90-п40й-й

 

0I

п-8-п-N

к 9-n950к

-й0 9SnS90А

-8j8-п-Nj n40

-м1п-1

0

 

к -й-N

 

к

1Bк

-rnjL-й18-40

1

NL n40

1r-м

-5N044S-

д

-8j 9I0

-Bй905-

j8-4п-9

4B-nN0-й -5-8-ммjА

к I-п-5-кr

S51B90

190-пB5-N4--n40

-41- й1д -5-8-44Sд

0п8n40 -41B- -N-5t0

--B 9 -

5-8-44-r

к

9-n950к 0-йB9SnS90А

-8j8-й-Njю

 

 

 

 

 

РОНОRННЕЕМЗССМИОR!НRОПОНС. !СО •ЕИСО! ПОКПНН!НИВ !rТЕХ,!.ТЕХ\ВОТЕХ

 

ИИПОННИПС!ОИПСНН!И!МИ

ПОНМВВМВО. nИНИ!НИСЗСМ!М ПОКПНН!НИСm

 

ЗС !rТЕХ,!.ТЕХМ!ММ!НС nИНИЕИИИНС.

ИИСОМИО! !НИ!ОЕ З!ЕМНИПСКСm

ВНИМАНИВ

ПНР!ИЕЕ

ЕИСО!Е ПОКПНН!НИСЗСЗТЕМАЗТИЗМТЗО!ИН!Н!ИИЗС П nИНИЕИИ

 

 

ИОЗ !rТЕХ,!.ТЕХ.

 

 

 

 

 

 

 

 

!СКОП hrТЕХ,! .ТЕХl n МКЕИСО!Н ТЕХРl n ПСR!С!МВ СН! !И.

ПНПМПСКОП!РЗО

 

RО !НЕRОRОЕИВО!Н

О!ИН!О КИНМИИМИВМnН .g,

ТЕХПОКПНН.

!НИЕОИЕИСО!ОЕ

 

hrТЕХ,!.ТЕХl n .ЗОТННИСИСЗСПnИНИЕИИИОЗ!rТЕХ,!.ТЕХ!·,ТЕХ

ИСО!.ПОСОНСЗ ПОКПНН!НИС КИН!И!МИ-ПН!. ИНnНМЕИН.hrТЕХ,!.ТЕХ !1nИИ ЕО!ИС КНПИНТМВВЗ nНОЗСОnО!ОЗСМ!И!ММ КНПНСПНР!ИЗ !МRЕНИОЗ

З!ОЗПМ. nОЗПО!ВПЕА, ЗОПИНТИИИОИИnОИСВИО•!НПОИ!И МЕИИ!О КИНm ЗАПОМНИ! !ИИМИ!О!!И! ЗЕ!ИС ПИНИЕСВ СОВЕИСО!ОСТFS\11ТS!СВОRОЗСКНСИ!ВИОИН!Мo

ММИОnИННСОНН,ТЕХЧ,,Е!d

, СС ЧАСТЬ 2 зчsрьяоеъееПрояПеемиооер кееeеиддПеемиоПрои тл

Определение метода без возвращаемого значе·ния

г

·пдИЗд

 

 

 

 

 

 

 

 

 

зк

жПтждгд

гзв

 

 

а·а Пз

П

·с

Зн

И·хдИЗдгЗг·

 

вИ·азСи

дСгПисг

Одгзвг ИдПз

П

·

·с

ЗдИЗхд

з

·ИддПг Сг·таЗП·тЗСм С г

ЗОд

зОг·аз

з

Одгзв·

 

 

 

 

 

 

азгз

гнПгПзвЗт ПгхЗСтдИИздС

двИддИ·хд

ИЗдИ·

а ·ИЗхд ИдзПз

П · Пг·ж гП·с дОиОдгзви

ОдСгзгз з хгзкг

згиСгЗгмП зк

жПтдИЗЗг·аз

зОдгзв· гЗг Пз П ·дОз з И·хдИЗжП

 

иа·

 

гП·дгСж

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

О

м

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тсхдПздСтзПз

 

игзг дктдИИздПОдСгзЗОдИЗгЗг·

гз СигЗ з

И·х·

дг

 

 

 

 

г

диа·

гП·дг хгз Одгзв

 

 

 

 

ИЗхд

з

ИдПз

П

·

·Пдг

гП·с

дОиОдгзви

 

тскзд зк

жПтдИЗдОдгзв·

зкж

·Из

иа· гП·гмПз

П

·

·дОгнЗг

в·пд дСтЗ

гз

 

 

 

 

 

 

 

 

 

дгзвазгз

гнИдПз

П

· ·дгИ·хдИЗжг

з ·ООЗСг·ОЗ И·

 

гП·дг

 

Сж

 

 

 

гз ЗСгзтм

зП·ИИзОиатсхдПзОиСтзПиП д

згЗ

 

ЗАПОМНИ!

С·ИЗЗ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

nДОВ!Сi ИДБПЧБРЧМДЗБr

a

ЕДОВ!НЕМПВЧПТНЧНРОЕСТНПЧДИМДПСЧСПН

РЧДЕЕ

ЕДОВ!Е СТМПССВЧИДИММВСДТНОВТНТЕХtЧ,ТЕХЧНПВОВТСЕКИ

ЗЧД!ЕДОПВЧПТНe

ЧНДЕВД ПСЧСПНРЧДЕЕ ЕДОВ!Е ЧИНМДИМДРОВЗПВЧВПЕ! r

,

ЕДОВ! ИДПВЧПТНЧН

ДОИМПНПВ'ВЧИНМДИМБПСТВ!

МЧИД'В ВЗЕЧДЗОПЧБДОЗБСВЗТД!ЗОПВЕ ВСДТНОВТН

ТЕХ,tТЕХЧcЗДЧПНПВ'В ЗС ОВИМЗСЧВ ЧИНМДИМБЧМЗВСТМ!ВЗОМ!ДИММЧНПТСПНРЧДЗ

ОДЧВЕДОВ!Н!М'ЕТИВЗ ЗПВЗПМ!

НЗЗЕВОТМЕЗЧД!ЕРЧМЗ ЕДОВ! sa p·!

!Ч,g·

 

НЕ eВ

 

"

Е

 

 

 

 

 

i

 

"

!!o

P

 

 

 

 

 

" О

 

P С

 

ПОИС.

!

 

 

 

 

 

 

 

 

ТЕ

 

 

.o

 

О o

 

 

 

" С

 

 

 

o

О

С o

ЕТ P

 

 

o С

О o

 

 

 

 

 

!ЗАЗАЗА, I Методы

п ллC

Вы могли заметить, что метод WriteLine ( ) , использовавшийся в рассматри­ ваемых программах, представляет собой не более чем вызов метода класса

Console:

G

lэ . ® lы®l iя

o

ая к

Метод WriteLine ( ) - один из множества предопределенных методов, пре­ доставляемых библиотекой .NET. Console - предопределенный класс, пред­ назначенный для использования в консольных приложениях.

Аргументом метода WriteLine ( ) , применявшимся в рассмотренных выше примерах, является строка string. Оператор + позволяет программисту со­ брать эту строку из нескольких строк или строк и переменных встроенных типов, например, так:

G

wр Q я

як

ь t

t

).l ®

lыl®оя'l

 

 

яэ

я t w Т ь

sв я

В результате вы увидите выведенную на экран строку"Меня зовут Маша, и мне 3 года':

Второй вид метода WriteLine ( ) допускает наличие более гибкого множества аргументов, например:

G

э.l °":lы°": ilя'l

ь i

 

я

ня ­ eк

Первый аргумент такого вызова называется форматной строкой. В данном примере строка "Маша " вставляется вместо символов { о } - нуль указывает на первый аргумент после командной строки. Целое число 3 вставляется в позицию, помеченную как { 1 } . Этот вид метода более эффективен, поскольку конкатенация строк не так проста, как это звучит, и не столь эффективна.

Метод DisplayRatio ( ) начинает работу с проверки, не равно ли значение denominator нулю.

»· Если значение denominator равно нулю, программа выводит сооб­ щение об ошибке и возвращает управление вызывающему методу,

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

)) Если значение denominator не равно нулю, программа выводит на экран значение отношения. При этом закрывающая фигурная скоб­ ка после вызова метода WriteLine ( ) является закрывающей скоб­ кой метода DisplayRatio ( ) и, таким образом, представляет собой точку возврата из метода в вызывающую программу.

зпчи rчянии iи сaфдгтеожо авдетв аот рееодижаощар яяваот ревдиериDси

Если бы это было единственной разницей, не о Однако вторая форма глаnсенааеnи . nпредоставляет форматом вывода, описанных в главе 3, "Работа со

чем было бы много писать.

ряд элементов управления строками".

Возврат нескольких значений с использованием кортежеи

В версиях С# до С# 7.0 каждое возвращаемое значение является отдель­ ным объектом. Это может быть сложный объект, но это все еще единственный объект. В С# 7.0 можно возвращать из методов несколько значений, используя кортежи. Кортеж - это разновидность динамического массива, номинально содержащего два элемента, которые можно интерпретировать как пару "ключ­ значение" (но это не обязательно). В С# вы также можете создавать кортежи, содержащие более двух элементов. Многие языки, такие как Python, использу­ ют кортежи, чтобы упростить кодирование и значительно облегчить работу со значениями.

Фактически С# 4.х ввел концепцию кортежей как часть подхода динамиче­ ского программирования. Однако С# 7.0 продвигает использование кортежей, позволяющих возвращать несколько значений, а не только один объект. Под­ робный обзор кортежей выходит за рамки данной к ниги, но они так хорошо работают при возврате сложных данных, что вам, определенно, необходимо знать кое-что об этом их применении.

Кортеж с двумя элементами

Кортеж основан на типе данных nпW меinкоторый может принимать одно или два входных данных, причем наиболее распространенными являются кортежи с двумя элементами (в противном случае вы можете просто вернуть единствен­ ный объект). Лучший способ работы с кортежами - предоставить типы дан­ ных переменных, с которыми вы планируете работать, как часть объявления. Вот пример метода, который возвращает кортеж:

щ B:)тum,(

х1i:им:им S1,

B

r,т o v

 

 

 

 

 

цц

хим,

B тr,(

ц;им1,

;им

nSн I,wwр н i : и is V

х,

Код начинается с указания того, что :е слкЛмnnц Lвозврn ащает кортеж лпхмеn из двух элементов с типами нслаа:nи аасеnКлючевое слово аnanиспользует­ ся для создания экземпляра лпхiеEnс типами данных, описанными в угловых скобках, (нслаа:вnаасНinи указанными значениями данных. Метод :евлпхмеnа . n

ГЛАВА 1 3 Методы 303

 

ЕТТ!ПT1!!ЧЕИВ

О!СЕТВ!ЧТ!1!!ПНВЕТ !!1!СЧ

ЧЕТTВ!Ч 1ЕЧPВЕИН ЕВ ТСИ

 

ЕТВ!ЧНО ЕТП!!ЕТЗ ЕТИТЧЗВЧЕЕТr ИПИВСR!ИЗ ЕТЕТСЧЕЕТЗЕТЕТСR!ЕТRСЧЗl

 

cЕТ! ВВПЧВЕТ! i

!!В ТС! В О!!ВЧ ЕТСВЕТ!!ЧЕИНО!Тr !ВЕТЗ ВЧЕЕТЗ

СОВЕТ

!ТИЕТЕ!Ч3ЕТЕТН! СЧЗОИ!!СЕТВ!ЧlrЧТСИЗВСcТСИ!ТТ !ПЕВЕИИ !ТСВВВ):

 

 

 

 

 

ПВЕЕТr ЗЧЕТВЗЧЕТИPВЕТ!И!ТВСЧr

ИИЗ!!ВЕТ ЕТТЕТЕВT!ЕТr!ВИЗ! !ВСЕRЕТT

 

СВ1RПTЕТЧЕТИ!ЕТЕТЧ!ОИПИ!ВoВЕТЕТ!ВЕЕR3

И ЗЕИЗR3 PЧЕТЕТИ!!ЗТПВОЕТ):

 

Е!!! PИЕТПЧ.ti

 

 

 

Применение метода Create ( )

.b.#,2V .(6 2l3 iS1i12

i12.V2(1

 

n1,.#6V

(iS

1.b216V2(#

-#.1.V

rnSeimS

#2art.b.VS1. .arкV#.i1 .Vn13 6#я .V. S,( ,V21.#

i

-#.1.1-

1S(iV2i

2l-6 S,#.l

.ar

#-,V2.#.#t th1. S,(-#,

 

(iS1.b216V2(1 -#.1.V МSeimS

 

 

w т

 

w0

0

у

 

 

 

 

 

 

 

 

 

 

 

w

0

3

 

у

 

 

 

э.1. S1.F1. 2# .V. 2#21SVi#2 nV. (iS1.b216V2

# -#.1.V S1.42V221W1 6 S,#r

.0.ar #-,V2.#.# S1.1-arк.1

g.#-#2.l

э

S-1War2l. .b

(2-#2#2l (262#d

thn12i.,ar

-,#1621 (in .7к

(.b кVi.b

 

rimoМдТhrдoimhV. .Vn n1-S(.1.1, -1r

6#. 601i2

. b .(Sl

g.#-#2.16

э

(2 S#,#.V 22lF 6F1.2

F.V22lFt

304 ЧАСТЬ 2 7Bu.83,# #-..,3.-#.-,,#. 4-#O-...- #.-,.. ,-C

Мноrоэлементные кортежи

Истинная ценность кортежа заключается в создании наборов данных с ис­ пользованием чрезвычайно простых методов. Вы можете выбрать для просмо­ тра Iteml в качестве ключа и Item2 в качестве значения. Многие типы наборов данных полагаются на парадигму "ключ-значение", и такая трактовка кортежа делает его невероятно полезным. В следующем примере показаны создание и возврат соответствующего набора данных.

static Tuple<string, int> [ ] getTuple ( )

дt

// Создание нового кортежа . Tuple<string, int> [ ] aTuple

дt new Tuple<string, int> ( "One" , 1 ) , new Tuple<string, int> ( "Two" , 2 ) , new Tuple<string, int> ( "Three " , 3 )

V

// Возврат списка значений с использованием кортежа . return aTuple;

Как и в предыдущем разделе, вы указываете в качестве возвращаемого типа Tuple, но с добавлением пары квадратных скобок ( [ ] ), аналогичных тем, кото­ рые используются для массива. Квадратные скобки говорят С#, что эта версия getTuple ( ) возвращает несколько кортежей, а не один.

Чтобы создать набор данных, вы начинаете с объявления переменной aтuple. Каждая новая запись в кортеже требует нового объявления кортежа с необходимыми входными данными. Все они помещаются в фигурные скобки. Чтобы вернуть кортеж, как обычно, используется оператор return.

Доступ к кортежу требует использования перечислителя, и вы можете де­ лать все, что вы обычно делаете с перечислителем, например работать с от­ дельными значениями с помощью foreach:

static void Main (string [ ] args)

дt

// Получение набора кортежей .

 

 

 

 

 

= getTuple ( ) ;

 

Tuple<string,

int> [ ] myTuple

 

//

Вывод значений .

in myTuple)

 

 

 

 

 

foreach (var

Item

 

 

 

 

 

{

Console . WriteLine ( Item . Iteml +

"\t"

+

Item . Item2 ) ;

 

)

 

Ожидаем подтверждения пользователя

 

 

 

//

"

+

 

Console . WriteLine ( "Haжмитe <Enter>

для

 

Console . Read ( ) ;

"завершения программы. . . " ) ;

 

 

 

 

 

 

ГЛАВА 1 3 Методы 305

Соседние файлы в папке Информатика