4757

Использование библиотеки классов. NET Framework (Visual C#)

Лекция

Информатика, кибернетика и программирование

Использование библиотеки классов. NET Framework (Visual C#) Библиотека классов платформы .NET Framework Framework Class Library, FCL содержит определения типов, например, классов, структур, перечислимых типов, интерфейсов и.т.д. Каждый тип пре...

Русский

2012-11-25

751 KB

49 чел.

Использование библиотеки классов .NET Framework (Visual C#)

Библиотека классов платформы .NET Framework Framework Class Library, FCL содержит определения типов, например, классов, структур, перечислимых типов, интерфейсов и.т.д.  Каждый тип предоставляет некоторую функциональность. Библиотека классов организована в пространства имен (namespace), в каждом из которых находятся связанные классы и структуры. Например, пространство имен System содержит типы для целых чисел, символов, строк, консольного ввода-вывода, форматирования данных, выполнения математических операций и др.

Пространства имен .NET Framework и классы, которые они содержат можно посмотреть с помощью инструментального средства Обозреватель объектов (Object Browser) среды разработки  Microsoft Visual Studio. Открыть обозреватель объектов можно через меню Вид.

Значки обозревателя объектов

В Обозревателе объектов отображаются значки, служащие для представления сущностей кода, таких как пространства имен, классы, функции и переменные. В следующей таблице приведены значки с их описанием. 

Значок

Описание

Значок

Описание

Namespace – пространство имен

Метод или функция

Класс

Operator

Интерфейс

Свойство

Структура

Поле или переменная

Delegate

Событие

Перечисление

Константа

В обозревателе объектов отображается три области:

  •  слева область типов: классов, структур и других (могут быть также названия пространств имен и названия сборок – имен файлов, в которых размещены библиотеки.)
  •  область членов типов в верхней правой части
  •  область описаний в нижней правой части.

Рис 1. Пример отображения названия сборки в окне обозревателя объектов – имени файла, в котором размещены библиотеки.

Рис 2. Пример отображения названия пространства имен в окне обозревателя объектов.

Типы. Типы значений состоят из двух основных категорий:

  •  Структуры. Пример 

public struct Book

{

   public decimal price;

   public string title;

   public string author;

}

  •  Перечисления. Пример

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

Все простые (встроенные) типы — встроенные в язык C# — являются псевдонимами системных типов .NET Framework. Например, int является псевдонимом для System.Int32.

Ссылочные типы

  •  class. Пример

class TestClass

{

   // Methods, properties, fields, events, delegates

   // and nested classes go here.

}

  •  interface
  •  delegate
  •  массивы

Класс (структура) может содержать объявления следующих членов:

  •  Конструкторы
  •  Константы
  •  Поля
  •  Методы
  •  Свойства
  •  Индексаторы
  •  Операторы
  •  События

Рис 3 Пример отображения названия типов. Класс Console – статический класс пространства имен System в окне обозревателя объектов. В верхней правой части окна обозревателя отображены имена членов типа Console – имена методов и свойств.

Для того чтобы можно было использовать классы или структуры заданного пространства имен в программе на C#,  необходимо добавить в код директиву using для этого пространства имен. Например, using System;

Член типа. Свойство . Получение доступа к свойствам.

Свойства  можно использовать, как если бы они являлись открытыми членами данных  (полями, имеющими тип), хотя в действительности они являются специальными методами, называемыми методами доступа. Метод доступа свойства get используется для возврата значения свойства, а метод доступа set используется для назначения нового значения. Т.е. со свойствами надо работать как с переменными. Статические свойства.

Рис 4. Отображение имени статического свойства Title класса Console в окне Обозревателя объектов. 

Пример использования статического свойства Title класса Console.

using System;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

          Console.Title = "Мой проект";

       }

   }

}

Результат

В программе статическому свойству Title класса Console, присваивается строковое значение "Мой проект", так как свойство имеет тип string и у него есть метод доступа set.

Если есть ключевое слово static в определении члена типа, то для доступа к члену типа необходимо указать имя типа, поставить точку и указать имя члена типа. Скобки после имени свойства ставить нельзя – со свойством надо работать как с переменной.

Задание Свойство BackgroundColor класса Console Возвращает или задает цвет фона консоли.

Написать код, демонстрирующий применение свойства.

Ответ

using System;

class Program

{

   static void Main()

   {

       Console.BackgroundColor = ConsoleColor.DarkYellow;

       Console.Clear();

   }

}

Задание Свойство WindowHeight класса Console Возвращает или задает высоту области окна консоли.

Написать код, демонстрирующий применение свойства.

Какой тип имеет свойство?

Ответ

using System;

class Program

{

   static void Main()

   {

       Console.WindowHeight = 1;

   }

}

Тип int

Пример использования свойства в определении, которого нет ключевого слова static.

Посмотрим в обозревателе объектов, какие члены есть у класса string. Найдем не статическое свойство, например Length. (В определении свойства нет ключевого слово static.)

Для доступа к свойству необходимо создать экземпляр класса string.

       string f = "ghdh fhfh";

       int t = f.Length;

       Console.WriteLine(t);

Посмотрим в обозревателе объектов, какие члены есть у структуры DateTime пространства имен System.

Рис. Отображение имени структуры DateTime  пространства имен System в окне обозревателя объектов.

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

Например

DateTime mydata = new DateTime(2010, 09, 09);

Рис Отображение имени свойства Day структуры DateTime в окне обозревателя объектов.

Пример использования свойства Day в определении, которого нет ключевого слова static.

using System;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

           DateTime mydata = new DateTime(2010, 09, 12);

           int myday = mydata.Day;

           Console.WriteLine(myday);

       }

   }

}

Так как в определении свойства нет ключевого слова static, то оно относится к экземпляру типа. Поэтому необходимо, сначала создать экземпляр структуры с помощью ключевого слова new, затем получить доступ к свойству указав имя экземпляра типа, точка, имя свойства без круглых скобок. Свойству Day нельзя присвоить значение, так как для него не определен метод доступа set. Можно только получить значение свойства.

Задание

Статическое свойство Today структуры DateTime возвращает текущую дату.

Нестатическое свойство DayOfYear структуры DateTime возвращает день года, представленный этим экземпляром.

Написать код, демонстрирующий применение свойств.

Какие типы имеют свойства?

Ответ

using System;

class Program

{

   static void Main()

   {

       DateTime mydata = new DateTime(2010, 01, 12);

       int myday = mydata.DayOfYear;

       Console.WriteLine(myday);

       DateTime f = DateTime.Today;

       Console.WriteLine("{0:d}",f);

   }

}

– поля .  Получение доступа к полям структур или классов
Поле переменная объявленная в классе или структуре. Поле имеет имя и тип. Класс или структура могут иметь поля экземпляра или статические поля.

Пример. Статическое поле MaxValue структуры DateTime доступное только для чтения.

Рис. Отображение имени и описание статического поля MaxValue структуры  DateTime пространства имен System в окне обозревателя объектов.

Тип поля – DateTime. Поэтому для того чтобы сохранить значение поля необходимо объявить переменную maxval типа DateTime.

DateTime maxval = DateTime.MaxValue;

           Console.WriteLine(maxval); 

Задание

Статическое поле Empty класса String Представляет пустую строку. Это поле доступно только для чтения. Написать код, демонстрирующий применение поля Empty. Какой тип имеет поле Empty?

Ответ 

using System;

class Program

{

   static void Main()

   {

       string s = String.Empty;

       Console.WriteLine(s);

   }

}

Пример поле экземпляра.

Рис. Отображение имени и описание поля myfield класса  mycclass в окне обозревателя объектов.

В примере определен пользовательский тип – класс mycclass. Необходимо добавить в код директиву using, потому что используется класс Console пространства имен System.

using System;

public class mycclass

{

   /// <summary>

   /// открытое поле myfield класса mycclass

   /// </summary>

   public int myfield;

}

class Program

{

   static void Main()

   {

       mycclass myobject = new mycclass();

       myobject.myfield = 9;

       Console.WriteLine(myobject.myfield);

   }

}

В классе определено открытое поле myfield. Для доступа к полю необходимо указать имя экземпляра типа (класса mycclass), точка, имя поля без круглых скобок, так как с полем надо работать как с  переменной. 

Как правило, в классах и структурах библиотеки используются поля имеющие модификаторы доступа private или protected. Данные, которые класс представляют клиентскому коду, должны обеспечиваться методами, свойствами и индексаторами. Используя эти конструкции для косвенного доступа к внутренним полям, можно защититься от недопустимых входных значений.  Поэтому был создан пользовательский тип – класс mycclass.

–Константы.

Константы представляют собой неизменные значения. Только встроенные типы C# могут быть объявлены как const. Константы должны быть инициализированы сразу после объявления.

Пример Объявление константы.

public const int months = 12;

Пример. Константа PI Класса Math пространства имен System.

Рис. Отображение имени и описание константы PI класса  Math пространства имен System в окне обозревателя объектов.

Пример использования константы PI класса  Math.

using System;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

           double pi = Math.PI;

           Console.WriteLine(pi);

       }

   }

}

Доступ к константе PI класса  Math осуществляется также как и к статическим членам типов. Имя типа, точка, имя константы.

Задание

Константа NegativeInfinity Представляет минус бесконечность. Это поле является константой структуры double. Написать код, демонстрирующий применение константы NegativeInfinity.

Ответ 

using System;

class Program

{

   static void Main()

   {

       double d = Double.NegativeInfinity;

       Console.WriteLine(d);

   }

}

– Методы.

Метод – функция, выполняющая некоторое действие над объектом. Метод имеет имя, возвращаемое значение, тип возвращаемого значения, параметры, типы параметров, число параметров, последовательность параметров, модификаторы. Возвращаемое значение может быть пустым – void.

Конструкторы имеют такое же имя, как и классы или структуры. Конструктор — это специальный метод, который используется для создания нового экземпляра типа и инициализации  его полей. Например, создание и инициализация экземпляра структуры DateTime пространства имен System.

DateTime mydate = new DateTime(2010, 09, 27);

           Console.WriteLine(mydate.ToString("d"));

Методы бывают методами типа (статический метод) или методами объекта (экземплярный метод). Для доступа к статическому методу необходимо указать имя типа, точка, имя метода круглые скобки, в скобках содержится список аргументов.

Например, статические члены структуры DateTime пространства имен System. 

Например, выберем метод возвращающий количество дней в месяце.

Метод возвращает тип int. Создадим переменную типа int и сохраним значение, возвращаемое методом.

int day = DateTime.DaysInMonth(2010, 09);

     Console.WriteLine(day);

Для доступа к экземплярному методу необходимо указать имя экземпляра типа, точка, имя метода, круглые скобки,

Например, экземплярные члены структуры DateTime пространства имен System. 

Выберем метод экземпляра ToString("d") с параметром, содержащим строку форматирования, для получения строковое представление объекта.

DateTime mydate = new DateTime(2010, 09, 27);

           string str = mydate.ToString("d");

     Console.WriteLine(str);

Перегрузка.

Перегруженные члены должны предоставлять различные варианты одних и тех же функциональных возможностей. Если два или более члена внутри типа являются членами одного вида (метод, свойство, конструктор и т. п.) и имеют одинаковые имена и различные списки параметров, говорят, что член перегружен.

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

Два (или более) метода могут иметь одно имя, если у них один параметр, но он имеет разный тип данных. Например, Получение абсолютного значения числа двойной точности с плавающей запятой

using System;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

           double x = -10.5;

           double y = Math.Abs(x);

           Console.WriteLine(y);

       }

   }

}

Например, получение абсолютного значение 32-разрядного знакового целого числа

using System;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

           int x = -10;

           int y = Math.Abs(x);

           Console.WriteLine(y);

       }

   }

}

Метод Math.Abs(…) имеет семь перегрузок.

Перегруженные методы могут иметь одинаковые имена, если их списки параметров различаются. Два (или более) метода могут иметь одно имя, если у них разное число параметров. Например, вывод на консоль двух переменных с указанием формата вывода.

Метод содержит три параметра: первый имеет тип string и содержит строку формата, второй и третий параметры имеют тип object. Так как тип object является базовым типом для всех типов, то мы можем использовать в качестве аргумента метода переменные типа int и double.

using System;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

           int x = -10;

           double y = 22.0;

           Console.WriteLine("{0:d}    {1:f2}", x, y);

       }

   }

}

Например, вывод на консоль одной переменной с указанием формата вывода.

using System;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

           double y = 22.33456;

           Console.WriteLine("{0:f4}", y);

       }

   }

}

Метод Console.WriteLine() имеет 19 перегрузок.

Тип object является базовым типом для всех типов. Все встроенные типы неявно наследуют от object и имеют метод экземпляра ToString(), для того чтобы получить строковое представление экземпляра типа.

В зависимости от типа экземпляра перегруженный метод ToString()может иметь разное число перегрузок.

Экземпляр типа object имеет одну перегрузку метода. 

Экземпляр типа double имеет четыре перегрузки метода ToString().

Пример. Если переменная имеет значимый тип double, то существует перегруженный метод, у которого есть параметр получения строки формата.

using System;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

           double y = 22.33456;

           Console.WriteLine(y.ToString("f3"));

           object obj = 22.33456;

           Console.WriteLine(obj.ToString());

       }

   }

}

Методы библиотеки классов  часто в качестве параметра метода содержат переменные типа перечисление. Тип перечисления предоставляет эффективный способ определения набора именованных интегральных констант, значение одной из которых можно назначить переменной.

Пример.

В примере показано использование переменной типа перечисление MidpointRounding. Перечисление MidpointRounding определено в пространстве имен System. Переменная является параметром метода Round  класса Math. Для использования переменной типа перечисление в качестве аргумента метода необходимо набрать имя перечисления, поставить точку и выбрать имя  элемента списка перечислителя.

using System;

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

           double a = 10.5;

           double d = Math.Round(a, MidpointRounding.AwayFromZero);

           double d1 = Math.Round(a, MidpointRounding.ToEven);            

           Console.WriteLine("{0:f}    {1:f}", d, d1);

       }

   }

}

Параметр определяет правило округления, если первый десятичный разряд в числе — 5, то есть, если оно находится на равном расстоянии от единицы разряда и значения, на единицу больше, чем единица разряда, то число после округления может иметь одно из двух значений:

  •  MidpointRounding.ToEven. Если число нечетное, оно заменяется на четное. В противном случае он остается неизменным. Это поведение соответствует стандарту IEEE-754, раздел 4. Это иногда называется округлением до ближайшего или банковским округлением. Минимизирует ошибки округления, происходящие от постоянного округления среднего значения в одном направлении.
  •  MidpointRounding.AwayFromZero. Число всегда округляется до следующей цифры. Это наиболее известный метод округления. Это известно как симметричное арифметическое округление.

Создание и использование фрагментов кода IntelliSense

Cлужба языка предоставляет рекомендации по выполнению написанных инструкций с помощью IntelliSense. IntelliSense – это средство, способное существенно повысить эффективность работы, обеспечивая логические элементы кода, которые можно выбрать из раскрывающегося меню во время написания кода. 

 Пример, как из типа или пространства имен в коде можно вывести список допустимых членов.

  •  В редакторе кода в методе Main наберите Console.Wr.
  •  После ввода оператора области действия (.) открывается поле Список членов. IntelliSense автоматически выбирает первый член класса Console, начинающийся с W, то есть метод Write. 

  В поле Список членов выберите метод WriteLine и нажмите ENTER, TAB


 

А также другие работы, которые могут Вас заинтересовать

83910. Оперативные доступы к почкам и мочеточникам. Доступ к почечной артерии. Операции на почке и мочеточнике. Показания, техника выполнения 54.18 KB
  Доступ к почечной артерии. Доступ позволяет подойти к мочеточнику на всём его протяжении и к общей подвздошной артерии. Доступ к почечной артерии На почечной артерии выполняют следующие оперативные вмешательства: эндартерэктомию резекцию суженного сегмента почечной артерии обходное постоянное шунтирование почечной артерии дистальнее места окклюзии с помощью сосудистых протезов. Наиболее рационально при осуществлении доступа к почечной артерии использовать срединную лапаротомию и торакофренолюмботомию.
83911. Паранефральная блокада. Показания, техника выполнения. Нефроптоз 50.22 KB
  Осложнения: повреждение паренхимы почки и введение новокаина под собственную капсулу; повреждение сосудов почки; проникновение иглы в просвет восходящей или нисходящей ободочной кишок. Нефроптоз Нефроптоз патологическая подвижность почки проявляющаяся смещением органа за пределы своего анатомического ложа. При нефроптозе IIIII степени осложненном нарушением гемодинамики уродинамики хроническим болевым синдромом пиелонефритом нефролитиазом гипертензией гидронефрозом требуется хирургическая тактика проведение нефропексии...
83912. Современные технологии в хирургии 49.88 KB
  С конца 80х годов 20 века эти операции выполняют под контролем видеомонитора. В первую очередь эндохирургия охватывает операции на органах брюшной и грудной полостей лапароскопические и торакоскопические вмешательства. Минимально инвазивная хирургия область хирургии позволяющая проводить радикальные операции с минимальным повреждением структуры здоровых тканей и минимальным нарушением их функций. К минимально инвазивной хирургии относят эндоскопические операции выполняемые через естественные физиологические отверстия удаление полипов...
83913. Основы трансплантологии 52.47 KB
  Пути преодоления peкции отторжения Подбор наиболее совместимого по антигенным свойствам донора. Подавление реакиии отторжения. Подавление реакции отторжения возможно также с помощью антилимфоцитарного глобулина который оказывает супрессивное действие на лимфоциты играющие ключевую роль в реакции отторжения. Пациенты с пересаженными органами вынуждены принимать препараты пожизненно Хирургический путь борьбы с реакцией отторжения.
83914. Известные отечественные хирурги: Шевкуненко, Оппель, Греков и другие. Их вклад в развитие хирургии 53.31 KB
  Их вклад в развитие хирургии. Автор 50 научных трудов в том числе первого отечественного капитального руководства по оперативной хирургии в трех томах и руководства по топографической анатомии. Под его редакцией вышел Краткий курс оперативной хирургии с топографической анатомией 1951 переведённый на многие иностранные языки. Греков добился благодаря своим научным работам в области абдоминальной хирургии.
83915. Известные зарубежные хирурги: Бильрот, Кохер и другие. Развитие хирургии путём совершенствования оперативной хирургии 50.61 KB
  Развитие хирургии путём совершенствования оперативной хирургии. Бильрота связан ряд важных достижений хирургии в частности: первая эзофагэктомия первая ларингэктомия и что особо значимо первая успешная гастрэктомия по поводу рака желудка. Кроме того разработал ряд хирургических инструментов применяемых в хирургии в наши дни. Им опубликованы работы посвященные вопросам клинической хирургии в том числе костному туберкулезу и другим заболеваниям костей разработаны новые методы хирургических операций артротомия по Фолькману клиновидная...
83916. Н.И. Пирогов - вклад в развитие хирургии и топографической анатомии 46.6 KB
  Пирогов вклад в развитие хирургии и топографической анатомии. Пирогов основоположник топографической анатомии. Пирогов занял место профессора госпитальной хирургической клиники Медико хирургической академии СПб где с первых же дней стал читать знаменитый курс лекций по топографической анатомии он организовал анатомический институт в котором объединил практическую описательную и патологическую анатомию. Пирогов оформил все основные положения созданной им науки топографической анатомии в монументальном труде Полный курс анатомии...
83917. В.Н. Шевкуненко – создатель современного учения топографической анатомии на основе изменчивости 50.3 KB
  Геселевичем ввёл понятие типовой анатомии человека которая исследует распределение тканевых и системных масс в организме и расположение органов и частей тела с точки зрениях их развития. Типовая анатомия отмечает крайние типы строения и положения органов наблюдаемые у людей определённого телосложения. Шевкуненко исходными побуждающими моментами к таким исследованиям были: частое несоответствие формы и положения органов видимых во время операции с нормой описываемой в руководствах; несовершенство многих хирургических доступов при...
83918. Шовные материалы. Капрон, пролен, дексон, викрил и другие 50.37 KB
  Основные требования к шовному материалу: Биосовместимость отсутствие токсического аллергенного и тератогенного влияния шовной нити на ткани организма. Прочность нити и сохранение её свойств до образования рубца. Необходимо учитывать прочность нити в узле Атравматичность зависит от структуры и вида нити её манипуляционных свойств эластичности и гибкости. Понятие атравматичности включает несколько свойств присущих шовным материалам: Поверхностные свойства нити: кручёные и плетёные нити имеют шероховатую поверхность и при прохождении...