Современные среды программирования. Лекции, практики(22203, 22205): Горинов Николай Александрович Практики 22203, 22204: Ченин Алексей Александрович 22208: Матюхин Евгений Петрович Домашняя страница:
Список полезных источников Литература на домашней странице курса.
Интерфейс – класс, состоящий из определений функций. Пространство имен – именованная область определения переменных, типов, констант.
Архитектура.NET Язык прграммирования (C#, VB.NET, пр.) CLR (Common Language Runtime) Машинные коды Компилятор языка Just-in-time compiler
Особенности.NET Платформонезависимость кода Управление памятью, повышенная надежность приложений Независимость от языка программирования Готовые библиотеки для различных видов разработок Простота связывания скомпилированных модулей Удаленный вызов библиотек Упрощение разработки Упрощение распространения приложений
Недостатки.NET Низкая производительность Требовательность к памяти Необходимость аккуратного проектирования для своевременного освобождения ресурсов (периферия, пр.)
.NET Framework class library System.Collections System.Data System.Drawing System.IO System.Windows.Forms ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_fxnetstart /html/50c4d770-0bb4-4e6a-bcf0-966bc7a3de77.htm
Типы данных
Value typeReference type СодержитзначениеСсылку Управление памятью стеккуча ПрисваиваниеКопирует значение int a=3; int b =a; Копирует ссылку string a = abc; string b = a; 3 3 a b a b abc
Сравнение ключевых слов. Объявление переменной. Visual Basic Dim x As Integer Public x As Integer = 10 C++ int x; int x = 10; C# int x; int x = 10; ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vsref/html/7c0efba1-45d bdca3b899a6.htm
Сравнение языков. Комментарии. Visual Basic ' comment x = 1 ' comment Rem comment C++ // comment x = 1; // comment /* multiline comment */ C# // comment x = 1; // comment /* multiline comment */ ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vsref/html/7c0efba1-45d bdca3b899a6.htm
Сравнение ключевых слов. Создание экземпляра класса. Visual Basic Dim x As MyClass = New MyClass Dim x As New MyClass Dim x As New MyClass(100) C++ MyClass *x = new MyClass(); MyClass *x = new MyClass(100); C# MyClass x = new MyClass(); MyClass x = new MyClass(100); ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vsref/html/7c0efba1-45d bdca3b899a6.htm
Сравнение ключевых слов. Объявление массива. ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vsref/html/7c0efba1-45d bdca3b899a6.htm ЗадачаC++C#VB.NET Объявление массива Int a[5];Int [ ]x = new int[5];Dim x As integer() = new integer(5) Dim x(5) As integer Инициализация массива Int a[3] = {1,2,3}; Int [ ]x = new int[3] = {1,2,3}; Dim x() As integer = {1,2,3} Переопределе- ние массива. --ReDim [Preserve]
Сравнение ключевых слов. ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vsref/html/7c0efba1-45d bdca3b899a6.htm ЗадачаC++C#VB.NET Объявление константыconstConst readonly Const Создание экземпляра класса new New Ссылка на экземпляр самого себя this Me Значение ссылки, не ссылающейся на объект null Nothing Проверка переменной на существование ссылки на объект Obj == null Obj is nothing
Сравнение ключевых слов. Модификаторы области видимости. C#VB.NET Видимый только внутри класса Private Невидимый вне сборкиInternalFriend Видимый внутри класса и его потомков Protected Видимый внутри сборки и потомков класса Protected internal Protected friend Видимый всемPublic
Определение класса. Visual Basic [ ] class [inherits ] [implements [, …]] End class C# [ ] class [:,, …] { }
Visual Basic public class MyClass inherits MyBaseClass implements IMyInterface End class C# public class MyClass : MyBaseClass, IMyInterface { } Пример определения класса.
Определение метода. Visual Basic [shared] sub ([ { ByRef | ByVal } As ][, прочие параметры]) End Sub C# [static] void ( [{ ref | out }] [, прочие параметры]) { }
Пример определения метода. Visual Basic Public shared sub Test(ByVal i as integer, ByRef c as char, ByRef q as integer()) … End sub Dim I as integer : Dim c as char = q : Dim q as integer() Test(I, c, q) C# Public static void Test(int i, ref char c, out int[] q) { … } Int I; char c = q; int[] q; Test(I, ref c, out q);
Определение метода, возвращающего значение. Visual Basic [shared] function ([параметры]) [As ] return End Function C# [static] ([параметры]) { return ; }
Пример определения метода. Visual Basic Public shared sub Test(ByVal i as integer, ByRef c as char, ByRef q as integer()) … End sub Dim I as integer : Dim c as char = q : Dim q as integer() Test(I, c, q) C# Public static void Test(int i, ref char c, out int[] q) { … } Int I; char c = q; int[] q; Test(I, c, q);
Сравнение ключевых слов. ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vsref/html/7c0efba1-45d bdca3b899a6.htm ЗадачаC++C#VB.NET Переопределить метод-overrideOverrides Метод должен быть переопределен AbstractabstractMustOverride Не может быть переопределен SealedsealedNotOverridable Метод, который может быть переопределен Virtual Overridable Спрятать метод-newShadowing
Пример перегрузки метода. Visual Basic Public class A Public sub Test(ByVal i as integer, ByRef c as char) End class Public class B inherits A Public overloads sub Test(ByVal i as integer) End class C# Public class A { Public void Test(int i, ref char c) } Public class B : A { public void Test(int i) }
Пример переопределения метода. Visual Basic Public class A Public overridable sub Test(ByVal i as integer, ByRef c as char) End class Public class B inherits A Public overrides sub Test(ByVal i as integer, ByRef c as char) End class C# Public class A { Public virtual void Test(int i, ref char c) } Public class B : A { public override void Test(int I, ref char c) }
Пример переопределения метода. Visual Basic Public class A Public overridable sub Test(ByVal i as integer, ByRef c as char) End class Public class B inherits A Public overrides sub Test(ByVal i as integer, ByRef c as char) End class C# Public class A { Public virtual void Test(int i, ref char c) } Public class B : A { public override void Test(int I, ref char c) }
Определение свойства Visual Basic [readonly] property [As ] Get … return End Get [Set(ByVal value As ) End Set End Property C# [readonly] { get {... rerturn ; } [set { … }] }
Пример определения свойства Visual Basic Dim _qwerty As Integer Public Property qwerty() As Integer Get Return _qwerty End Get Set(ByVal value As Integer) _qwerty = value End Set End Property C# int _qwerty; public int qwerty { get { return _qwerty; } set { _qwerty = value; }
Сравнение управляющих конструкций. ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vsref/html/7c0efba1-45d bdca3b899a6.htm C++C#VB.NET If ( ) … [else …] If ( ) … [else …] If then … [else …] End if Switch ( ) { case : … break; default: … } Switch ( ) { case : … break; default: … } Select case Case … case else … End select
Сравнение управляющих конструкций. ms-help://MS.MSDNQTR.v80.en/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_vsref/html/7c0efba1-45d bdca3b899a6.htm C++C#VB.NET While (условие) { … } While (условие) { … } While условие … End while do { … } while ; do { … } while ; do … loop while For( ; ; ) …; For( ; ; ) …; For = to … Next -Foreach ( in ) …; For each in … Next
Делегаты Делегат = тип метода C#VB.NET Объявление типа делегата. Delegate Notifier (string sender);Delegate sub Notifier (ByVal sender As string) Создание переменной делегата. Notifier note;Dim note as Notifier Связывание делегата с методом. Void SayHello (string Sender) { Console.WriteLine(Sender); } note = new Notifier(SayHello); Sub SayHello (ByVal Sender As string) Console.WriteLine(Sender) End sub Note = new Notifier(AddressOf SayHello) Вызов делегатаNote(Hello, from Vasya);Note(Hello, from Vasya)
Делегаты Значение переменной делегата может быть нулевым. При нулевом значении вызов не может быть осуществлен. Обрабатываются как обычные объекты с данными.
Операторы приведения типов VB: CType(, ) при невозможности приведения произойдет исключение. C#: ( ) //при невозможности приведения произойдет исключение. As //при невозможности приведения вернет null
MS Visual Studio 2005 Поддержка нескольких языков Подсветка синтаксиса Дизайнер форм, поддержка визуального наследования Отладка приложений Средства рефакторинга и навигации в коду Средства модульного тестирования