Полное руководство. С# 4.0 - Шилдт Герберт
Шрифт:
Интервал:
Закладка:
Ниже приведен пример программы, в которой демонстрируется применение нескольких методов, определенных в структуре Char.// Продемонстрировать применение нескольких методов,// определенных в структуре Char.using System;using System.Globalization;class CharDemo { static void Main() { string str = "Это простой тест. $23"; int i; for(i=0; i < str.Length; i++) { Console.Write(str[i] + " является"); if(Char.isDigit(str[i])) Console.Write(" цифрой"); if(Char.IsLetter(str[i])) Console.Write(" буквой"); if(Char.IsLower(str[i])) Console.Write(" строчной"); if(Char.IsUpper(str[i])) Console.Write(" прописной"); if(Char.IsSymbol(str [i])) Console.Write(" символическим знаком"); if(Char.IsSeparator(str[i])) Console.Write(" разделительным"); if(Char.IsWhiteSpace(str[i])) Console.Write(" пробелом"); if(Char.IsPunctuation(str[i])) Console.Write(" знаком препинания"); Console.WriteLine(); } Console.WriteLine("Исходная строка: " + str); // Преобразовать в прописные буквы. string newstr = ""; for(i=0; i < str.Length; i++) newstr += Char.ToUpper(str[i], CultureInfo.CurrentCulture); Console.WriteLine("После преобразования: " + newstr); }}
Эта программа дает следующий результат.Э является буквой прописнойт является буквой строчнойо является буквой строчнойявляется разделительным пробеломп является буквой строчнойр является буквой строчнойо является буквой строчнойс является буквой строчнойт является буквой строчнойо является буквой строчнойй является буквой строчнойявляется разделительным пробеломт является буквой строчнойе является буквой строчнойс является буквой строчнойт является буквой строчной. является знаком препинанияявляется разделительным пробелом$ является символическим знаком2 является цифрой3 является цифройИсходная строка: Это простой тест. $23После преобразования: ЭТО ПРОСТОЙ ТЕСТ. $23Структура Boolean
В структуре Boolean поддерживаются данные типа bool. Методы, определенныев этой структуре, перечислены в табл. 21.10. Кроме того, в ней определены следующиеполя.public static readonly string FalseStringpublic static readonly string TrueString
В этих полях логические значения true и false содержатся в удобочитаемой форме. Так, если вывести содержимое поля FalseString с помощью методаWriteLine(), то на экране появится строка "False".
В структуре Boolean реализованы следующие интерфейсы: IComparable,IComparable<bool>, IConvertible и IEquatable<bool>.
Таблица 21.10. Методы, определенные в структуре BooleanМетодНазначениеpublic int CompareTo(bool value)Сравнивает логическое значение вызывающего объекта со значением параметра value. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет логическое значение false, а параметр value — логическое значение true; и, наконец, положительное значение, если вызывающий объект имеет логическое значение true, а параметр value — логическое значение falsepublic int CompareTo(object obj)Сравнивает логическое значение вызывающего объекта со значением параметра obj. Возвращает нуль, если сравниваемые значения равны; отрицательное значение, если вызывающий объект имеет логическое значение false, а параметр obj — логическое значение true; и, наконец, положительное значение, если вызывающий объект имеет логическое значение true, а параметр obj — логическое значение falsepublic bool Equals(bool obj)Возвращает логическое значение true, если значение вызывающего объекта равно значению параметра objpublic override bool Equals(object obj)Возвращает логическое значение true, если значение вызывающего объекта равно значению параметра objpublic override int GetHashCode()Возвращает хеш-код для вызывающего объектаpublic TypeCode GetTypeCode()Возвращает значение перечисления TypeCode для структуры Boolean, т.е. TypeCode.Booleanpublic static bool Parse(string s)Возвращает эквивалент типа bool символьной строки s. Если строка s не содержит ни поле Boolean. TrueString, ни поле Boolean.FalseString, то генерируется исключение FormatException, независимо от того, какими буквами набрано содержимое строки: прописными или строчнымиpublic override string ToString()Возвращает строковое представление значения вызывающего объекта, которое должно быть либо значением поля TrueString, либо значением поля FalseStringpublic string ToString(IFormatProvider provider)Возвращает строковое представление значения вызывающего объекта, которое должно быть либо значением поля TrueString, либо значением поля FalseString. При этом параметр provider игнорируетсяpublic static bool TryParse(string s, out bool result)Предпринимает попытку преобразовать символ из строки s в его эквивалентное значение типа bool. При успешной попытке это значение сохраняется в параметре result и возвращается логическое значение true. Если же строка s не содержит ни поле Boolean. TrueString, ни поле Boolean.FalseString, то возвращается логическое значение false, независимо от того, какими буквами набрано содержимое строки: прописными или строчными, в отличие от метода Parse(), который генерирует исключение в аналогичной ситуацииКласс Array
Класс Array относится к числу наиболее часто используемых в пространстве именSystem. Он является базовым классом для всех массивов в С#. Следовательно, его методы можно применять к массивам любого встроенного в C# типа или же к массивамопределяемого пользователем типа. Свойства, определенные в классе Array, перечислены в табл. 21.11, а методы — в табл. 21.12.
В классе Array реализуются следующие интерфейсы: ICloneable, ICollection,IEnumerable, IStructuralComparable, IStructuralEquatable, а также IList.Все интерфейсы, кроме ICloneable, определены в пространстве имен System.Collections, подробнее рассматриваемом в главе 25.
В ряде методов данного класса используется параметр типа IComparer илиIComparer<T>. Интерфейс IComparer находится в пространстве имен System.Collections. В нем определяется метод Compare() для сравнения значений двухобъектов, как показано ниже.int Compare(object х, object у)
Этот метод возвращает значение больше нуля, если х больше у; значение меньшенудя, если х меньше у; и, наконец, нулевое значение, если оба значения равны.Интерфейс IComparer находится в пространстве имен System.Collections.Generic. В нем определяется метод Compare(), общая форма которого приведена ниже.int Compare(Т х, Т у)
Он действует таким же образом, как и его необобщенный аналог, возвращая значение больше нуля, если х больше у значение меньше нуля, если х меньше у, и, наконец,нулевое значение, если оба значения равны. Преимущество интерфейса IComparerзаключается в том, что он обеспечивает типовую безопасность. Ведь в этом случае типобрабатываемых данных указывается явным образом, а следовательно, никакого приведения типов не требуется.
В последующих разделах демонстрируется ряд наиболее распространенных операций с массивами.
Таблица 21.11. Свойства, определенные в классе ArrayСвойствоНазначениеpublic bool IsFixedSize { get; }Доступно только для чтения. Принимает логическое значение true, если массив имеет фиксированный размер, и логическое значение false, если массив может изменять его динамическиpublic bool IsReadOnly { get; }Доступно только для чтения. Принимает логическое значение true, если объект класса Array предназначен только для чтения, а иначе — логическое значение false. Для массивов это свойство всегда имеет логическое значение truepublic bool IsSynchronized { get; }Доступно только для чтения. Принимает логическое значение true, если массив можно безопасно использовать в многопоточной среде, а иначе — логическое значение false. Для массивов это свойство всегда имеет логическое значение truepublic int Length { get; }Доступно только для чтения. Имеет тип int и содержит количество элементов в массивеpublic long LongLength { get; }Доступно только для чтения. Имеет тип long и содержит количество элементов в массивеpublic int Rank { get; }Доступно только для чтения. Содержит размерность массиваpublic object SyncRoot { get; }Доступно только для чтения. Содержит объект, предназначенный для синхронизации доступа к массиву