. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
чт<strong>е</strong>ни<strong>е</strong> и запись файлов<br />
А трибут [Serializable]<br />
А т р и б у т о м назы ва<strong>е</strong>тся сп<strong>е</strong>циальны й т<strong>е</strong>г, добавля<strong>е</strong>м ы й в в<strong>е</strong>рхню ю часть классов. С помощ ью атрибутов<br />
в <strong>C#</strong> сохраняю тся м <strong>е</strong> т а д а н н ы <strong>е</strong> , то <strong>е</strong>сть и н ф о р м ац и я о том , как нужно исп ользовать код. Д о б а в и в атр и <br />
бут [ S e r i a l i z a b l e ] н а д о б ъ я в л <strong>е</strong> н и <strong>е</strong> м к л а с с а , вы п оказы ва<strong>е</strong>т<strong>е</strong>, что это т класс м ож но с<strong>е</strong>риализовать.<br />
П одобно<strong>е</strong> допустимо, скаж <strong>е</strong>м, для классов с полям и значим ы х ти п ов (напри м <strong>е</strong>р, i n t , d e c im a l или<br />
<strong>е</strong>питп). О тсутстви<strong>е</strong> этого атрибута, как и наличи<strong>е</strong> в класс<strong>е</strong> пол<strong>е</strong>й, с<strong>е</strong>риализац и я которы х н<strong>е</strong>возм ож на,<br />
п ри водят к сообщ <strong>е</strong>нию об ощ ибк<strong>е</strong>. Уб<strong>е</strong>дит<strong>е</strong>сь в этом сами...<br />
Создани<strong>е</strong> и с<strong>е</strong>риализация класса<br />
П ом н и т<strong>е</strong> класс Guy из главы 3? С <strong>е</strong>риализу<strong>е</strong>м <strong>Дж</strong>о, чтобы и н ф о р м ац и я о коли ч<strong>е</strong>ств<strong>е</strong> <strong>е</strong>го<br />
наличности осталась в ф айл<strong>е</strong>.<br />
[ S e r i a l i z a b l e ]<br />
c l a s s Guy<br />
в в<strong>е</strong>рхн<strong>е</strong>й части л ю <br />
бого файла класса, кот орый Вы собира<strong>е</strong>т <strong>е</strong>сь с<strong>е</strong>риализовать.<br />
Э тот код с<strong>е</strong>риализу<strong>е</strong>т класс в ф ай л G uy_f i l e . d a t, а такж <strong>е</strong> добавля<strong>е</strong>т кн опки Save Jo e<br />
(С охранить <strong>Дж</strong>о) и L oad Jo e (Загрузить Д ж о):<br />
u s in g S y ste m .lO ;<br />
u s in g S y s te m .R u n tim e . S e r i a l i z a t i o n . F o r m a t t e r s . B in a r y ;<br />
p r i v a t e v o id s a v e J o e _ C l ic k ( o b j e c t s e n d e r , E v en tA rg s e)<br />
u s in g (Stream o u tp u t = F i l e . C r e a t e ( " G u y _ F ile . d a t " )) {<br />
}<br />
B in a r y F o r m a tte r f o r m a t t e r = new B in a r y F o r m a tte r ( );<br />
f o r m a t t e r .S e r i a l i z e ( o u t p u t , j o e ) ;<br />
}<br />
p r i v a t e v o i d l o a d J o e _ C l ic k ( o b j e c t se n d e r , E ven tA rgs e)<br />
{<br />
u s in g (Stream in p u t = F ile .O p e n R e a d (" G u y _ F ile .d a t" ))<br />
B in a r y F o r m a tte r f o r m a t t e r = new B in a r y F o r m a tte r ( );<br />
j o e = ( G u y ) f o r m a t t e r .D e s e r i a l i z e ( i n p u t ) ;<br />
Эти дв<strong>е</strong> строки using<br />
обязат<strong>е</strong>льно должны<br />
быть. П<strong>е</strong>рвая указыва<strong>е</strong>т<br />
пространство им<strong>е</strong>н,<br />
в котором происходят<br />
оп<strong>е</strong>рации ввода и вывода,<br />
вторая д<strong>е</strong>ла<strong>е</strong>т<br />
допустимой проц<strong>е</strong>дуру<br />
с<strong>е</strong>риализации.<br />
Fun w ith Jo e a n d 8 o b<br />
Joe has S »<br />
B ebhasSlffl}<br />
îh e b a r* has $100<br />
(3»в$№<br />
to Jae<br />
Receive<br />
}<br />
U pdateForm O ;<br />
Joetfïes<br />
$10 to В*<br />
Bob gives<br />
$5!o Jo e<br />
О<br />
}<br />
Запуск и т<strong>е</strong>стировани<strong>е</strong> програллмы<br />
Если Д ж о в р<strong>е</strong>зультат<strong>е</strong> обм <strong>е</strong>нны х о п <strong>е</strong>р ац и и с Бобом получил<br />
2 0 0 долларов, вряд ли он захоч<strong>е</strong>т п о т<strong>е</strong>р ять их п ри вы ход<strong>е</strong> из<br />
програм м ы . Т<strong>е</strong>п<strong>е</strong>рь Д ж о м ож <strong>е</strong>т сохран и ть свои кап италы в ф айл<br />
и восстан овить их в лю бой мом<strong>е</strong>нт.<br />
load Joe<br />
дальш<strong>е</strong> ► 431