Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет: Срок действия этого кода проверки уже истек. Проверьте, правильно ли введен код. У вас осталось две попытки. Вы также можете выбрать другой способ проверки или предоставить соответствующие документы, подтверждающие ваш академический статус.
Как активировать код? |
Консольные приложения в С#
Работа со строками в C#
Встроенный тип string (строки Unicode ) относится к ссылочному типу данных и является псевдонимом класса System.String. Этот базовый класс обеспечивает программиста множеством полезных свойств и методов для обработки строк. Часть методов является методами объектов, часть - методами класса (статическими).
Член класса | Назначение |
---|---|
Length | Это свойство возвращает длину указанной строки |
Concat() | Этот статический метод возвращает новую строку, склеенную из двух исходных |
CompareTo() | Сравнивает две строки |
Copy() | Этот статический метод создает новую копию существующей строки |
Format() | Используется для форматирования строки с использованием спецификаторов форматирования и подстановочных выражений вида {0} |
Insert() | Используется для вставки строки внутрь существующей |
PadLeft() PadRight() | Для заполнения строки слева или справа указанными символами |
Remove() Replace() | Эти методы позволяют создать копию строки с внесенными изменениями (частично удаленными или замененными символами) |
ToUpper() ToLower() | Возвращают копию строки с символами в верхнем или нижнем регистре |
Для этого типа некоторые операции перегружены так, что позволяют работать со значениями, а не со ссылками. Например, при использовании операторов равенства == или неравенства != происходит сравнение значений строковых объектов, а не адресов этих объектов в оперативной памяти. Оператор сложения + перегружен так, что при его применении к строковым объектам вызывается неявно метод Concat(). Кроме того, можно обратиться к любому символу строки с помощью оператора индекса [].
using System; namespace Test { class Test { static void Main() { string title = "****************** **************************\n" + "\tМетоды класса System.String\n" + "************************ ********************\n"; Console.WriteLine(title); // Создаем строку по классу System.String strObject = "Это строка-экземпляр класса System.String:"; string strAlias = "Это строка-экземпляр встроенного псевдонима string:"; // Сравниваем содержимое if(strObject == strAlias) Console.WriteLine("Строки равны"); else Console.WriteLine("Строки неравны"); // Склеиваем строки string addString = strObject + strAlias; Console.WriteLine("\nСклеенные строки\n{0}", addString); // Применяем индексатор для доступа к символам строки Console.WriteLine("\nСимволы строки \" {0}\"", strAlias); for(int i = 0; i < strAlias.Length; i++) Console.WriteLine("{0}. {1}", i, "\t" + strAlias[i]); while(true); } } }Листинг 20.43 . Пример работы со строками
Результат выполнения примера
******************************************** Методы класса System.String ******************************************** Строки неравны Склеенные строки Это строка-экземпляр класса System.String:Это строка-экземпляр встроенного псевдонима string: Символы строки "Это строка-экземпляр встроенного псевдонима string:" 0. Э 1. т 2. о 3. 4. с 5. т 6. р 7. о 8. к 9. а 10. - 11. э 12. к 13. з 14. е 15. м 16. п 17. л 18. я 19. р 20. 21. в 22. с 23. т 24. р 25. о 26. е 27. н 28. н 29. о 30. г 31. о 32. 33. п 34. с 35. е 36. в 37. д 38. о 39. н 40. и 41. м 42. а 43. 44. s 45. t 46. r 47. i 48. n 49. g 50. :
Управляющие последовательности и вывод служебных символов
В C# строки могут содержать любое количество управляющих последовательностей ( escape characters - управляющих символов), на которые реагируют средства вывода строк.
using System; namespace Test { class Test { static void Main() { // Форматирование без параметров + Звукнем string str = String.Format("\aЯ передаю \" Привет всем!\" {{Снетков}}\n"); Console.WriteLine(str); while(true); } } }Листинг 20.44 . Пример с управляющими символами строк
Результат выполнения примера
Я передаю "Привет всем!" {Снетков}
Применение класса System.Text.StringBuilder
При работе со строками в C# первоначальное значение строки не может быть изменено. Мы применяем к строкам множество модифицирующих методов и получаем нужный результат, но на самом деле методы каждое изменение строки записывают на новом месте в куче, а не используют одну и ту же область памяти. Ссылки на старые места хранения строк безжалостно бросаются, а методы возвращают лишь копии измененного содержимого, размещенного на новом месте. Брошенные ссылки подберет позже сборщик мусора, когда будет отдавать системе уже неадресуемые места памяти.
Когда потребуется не создавать лишние копии строк (особенно для больших объемов данных), а обрабатывать строки напрямую в месте их хранения, можно воспользоваться классом StringBuilder в пространстве имен System.Text.
Создание объекта класса StringBuilder осуществляется при помощи одного из многих его перегруженных конструкторов. Параметры конструкторов позволяют задавать значения четырех свойств, приведенных в таблице.
using System; // Для класса String using System.Text; // Для класса StringBuilder namespace Test { class Test { static void Main() { String strFixed = new String( "Эта исходная строка не меняется".ToCharArray()); String strUpper = strFixed.ToUpper(); Console.WriteLine(strFixed); Console.WriteLine(strUpper);// Новая копия int capacity = 100; // Исходный размер StringBuilder myBuffer = new StringBuilder( "\nИсходная строка", capacity); myBuffer.Append("+Добавленная строка"); Console.WriteLine(myBuffer);// Та же строка Console.ReadLine(); } } }Листинг 20.45 . Применение класса StringBuilder
Результат выполнения примера
Эта исходная строка не меняется ЭТА ИСХОДНАЯ СТРОКА НЕ МЕНЯЕТСЯ Исходная строка+Добавленная строка
Перечисления в C#
using System; namespace Test { enum EmpType { Manager, Grunt, Contractor, VP } class Test { void Variant(EmpType en) { switch(en) { case EmpType.Contractor: Console.WriteLine("Работает по контракту"); break; case EmpType.Grunt: Console.WriteLine(""); break; case EmpType.Manager: Console.WriteLine(""); break; case EmpType.VP: Console.WriteLine(""); break; default: Console.WriteLine(""); break; } } static void Main() { Console.ReadLine(); } } }Листинг 20.46 . Незавершенный пример