LoveRead.info » Книги » Разная литература » Интернет-журнал "Домашняя лаборатория", 2007 №9 - Журнал «Домашняя лаборатория»

Интернет-журнал "Домашняя лаборатория", 2007 №9 - Журнал «Домашняя лаборатория»

Книгу Интернет-журнал "Домашняя лаборатория", 2007 №9 - Журнал «Домашняя лаборатория» читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

301 0 18:01, 17-10-2023

Книга Интернет-журнал "Домашняя лаборатория", 2007 №9 - Журнал «Домашняя лаборатория» читать онлайн бесплатно без регистрации

Большой и увлекательный, научно-прикладной, образовательный, некоммерческий интернет-журнал, созданный группой энтузиастов. Журнал содержит материалы, найденные в Интернет или написанные для Интернет. Основная тематика статей — то, что можно сделать самому, от садовых поделок до сверхпроводников, но есть и просто полезные материалы.

    1 ... 334 335 336 337 338 339 340 341 342 ... 415
    Перейти на страницу:
    возможным неявное преобразование массива с элементами класса S в массив с элементами класса T, необходимо выполнение следующих условий:

    • классы S и T должны быть ссылочного типа;

    • размерности массивов должны совпадать;

    • должно существовать неявное преобразование элементов класса S в элементы класса T.

    Заметьте, если S — это родительский класс, а T — его потомок, то для массивов одной размерности остальные условия выполняются. Вернемся теперь к примеру с классами Int [], String[] и Object []. Класс int не относится к ссылочным классам, и потому преобразования класса Int[] в Object [] не существует. Класс string является ссылочным классом и потомком класса Object, а потому существует неявное преобразование между классами String [] и Object [].

    Правило для явного преобразования можно сформулировать, например, так. Если существует неявное преобразование массива с элементами класса S в массив с элементами класса T, то существует явное преобразование массива с элементами класса T в массив с элементами класса S.

    Для демонстрации преобразований между массивами написана еще одна процедура печати. Вот ее текст:

    public static void PrintArObj (string name,object[] A)

    {

         Console.WriteLine(name);

         foreach (object item in A)

             Console.Write("t {0}", item);

         Console.WriteLine();

    }//PrintArObj

    Как видите, формальный аргумент этой процедуры принадлежит классу Object []. при ее вызове фактическими аргументами могут быть массивы, удовлетворяющие выше указанным условиям. Вот пример кода, в котором вызывается эта процедура. В этом же фрагменте показаны и присваивания массива одного класса другому, где выполняются явные и неявные преобразования массивов.

    public void TestMas()

    {

         string[] winames = ("Т. Xoap", "H. Вирт", "Э. Дейкстра"};

         Arrs.PrintArObj("winames", winames);

         object[] cur = new object[5];

         cur = winames;

         Arrs.PrintArObj("cur", cur);

         winames = (string[])cur;

         Arrs.PrintArObj("winames", winames);

    }//TestMas

    Взгляните на результаты работы этой процедуры.

    Рис. 12.6. Семантика присваивания и преобразования массивов

    Приступая к описаниям массивов, я полагал, что 10 страниц одной лекции будет вполне достаточно. Оказалось, что массивы C# более интересны. Надеюсь, с этим согласятся и читатели.

    … В исходнике 13 лекция пропущена…

    14. Строки С#. Классы String и StringBuilder

    Строки С#. Класс String. Изменяемые и неизменяемые строковые классы. Классы Net Framework, расширяющие строковый тип. Класс StringBuilder.

    Класс String

    В предыдущей лекции мы говорили о символьном типе char и строках постоянной длины, задаваемых массивом символов. Основным типом при работе со строками является тип string, задающий строки переменной длины. Класс String в языке C# относится к ссылочным типам. Над строками — объектами этого класса — определен широкий набор операций, соответствующий современному представлению о том, как должен быть устроен строковый тип.

    Объявление строк. Конструкторы класса string

    Объекты класса String объявляются как все прочие объекты простых типов — с явной или отложенной инициализацией, с явным или неявным вызовом конструктора класса. Чаще всего, при объявлении строковой переменной конструктор явно не вызывается, а инициализация задается строковой константой. Но у класса Sring достаточно много конструкторов. Они позволяют сконструировать строку из:

    • символа, повторенного заданное число раз;

    • массива символов char[];

    • части массива символов.

    Некоторым конструкторам в качестве параметра инициализации можно передать строку, заданную типом char*. Но все это небезопасно, и подобные примеры приводиться и обсуждаться не будут. Приведу примеры объявления строк с вызовом разных конструкторов:

    public void TestDeclStrings()

    {

       //конструкторы string world = "Мир";

       string s1 = new string ("s1");

       //string s2 = new string ();

       string sssss = new string('s',5);

       char[] yes = "Yes".ToCharArray();

       string stryes = new string(yes);

       string strye = new string(yes,0,2);

       Console.WriteLine("world = {0}; sssss={1}; stryes={2};"+

             " strye= {3}", world, sssss, stryes, strye);

    }

    Объект world создан без явного вызова конструктора, а объекты sssss, stryes, strye созданы разными конструкторами класса String.

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

    Операции над строками

    Над строками определены следующие операции:

    • присваивание (=);

    • две операции проверки эквивалентности (==) и (!=);

    • конкатенация или сцепление строк (+);

    • взятие индекса ([]).

    Начну с присваивания, имеющего важную особенность. Поскольку string — это ссылочный тип, то в результате присваивания создается ссылка на константную строку, хранимую в "куче". С одной и той же строковой константой в "куче" может быть связано несколько переменных строкового типа. Но эти переменные не являются псевдонимами — разными именами одного и того же объекта. Дело в том, что строковые константы в "куче" не изменяются (о неизменяемости строкового типа будем далее говорить подробно), поэтому когда одна из переменных получает новое значение, она связывается с новым константным объектом в "куче". Остальные переменные сохраняют свои связи. Для программиста это означает, что семантика присваивания строк аналогична семантике значимого присваивания.

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

    Бинарная операция "+" сцепляет две строки, приписывая вторую строку к хвосту первой.

    Возможность взятия индекса при работе со строками отражает тот приятный факт, что строку можно рассматривать как массив и получать без труда каждый ее символ. Каждый символ строки имеет тип char, доступный только для чтения, но не для записи.

    Вот пример, в котором над строками выполняются данные операции:

    public void TestOpers()

    {

       //операции над строками string

       s1 ="АВС", s2 ="CDE";

       string s3 = s1+s2;

       bool b1= (s1==s2);

       char ch1 = s1 [0], ch2 = s2[0];

       Console.WriteLine("s1={0}, s2={1}, b1={2}," +

           "ch1={3}, ch2={4}", s1,s2,b1,chi,ch2);

       s2 = s1; 

       b1 = (s1!=s2);

       ch2 = s2 [0];

       Console.WriteLine("s1={0}, s2={1}, b1={2}," +

            "ch1={3 }, ch2={4 } ", s1,s2,b1,ch1,ch2);

       //Неизменяемые значения

       s1= "Zenon";

       //s1[0]='L';

    }

    Строковые константы

    Без констант не обойтись. В C# существуют два вида строковых констант:

    • обычные константы, которые представляют строку символов, заключенную в кавычки;

    • @-константы, заданные обычной константой с предшествующим знаком @.

    В обычных константах некоторые символы интерпретируются особым образом. Связано это прежде

    1 ... 334 335 336 337 338 339 340 341 342 ... 415
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


    Уважаемые читатели, слушатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Валентина Валентина04 июль 13:25 Большое спасибо за интересную тему.  Сюжет заманчиввй,интересный. Жду продолжения ... Лекарь Фамильяров. Том 7 - Александр Лиманский
    2. Наталья По Наталья По01 июль 10:12 Ужасный перевод:(... Аркадия - Эрин Дум
    3. Вика Вика29 июнь 21:56 Какая хрень с первых строк.  У ребенка в 14 месяце не может быть черепно мозговой травмы при падании с дивана ... Вернуть семью любой ценой - Чарли Ви
    Все комметарии
    Новинки бесплатной онлайн библиотеки