Transcript .NET Framework 2.0: новые возможности разработки
.NET Framework 2.0: новые возможности разработки приложений с использованием языка программирования C#
Сергей Байдачный Технический директор ITG Ukraine, Beliron
Содержание
Новые возможности языка C# Обобщенные классы Частичные типы Анонимные методы Итераторы Другие возможности Новые возможности при создании Windows приложений Новые элементы управления Новые возможности при создании Web приложений Новые элементы Изменения в работе ASP.NET
Обобщенные типы Проблема Упаковка и распаковка
ArrayList list=new ArrayList(); list.Add(3); //
упаковка
Обобщенные типы Проблема Упаковка и распаковка Отсутствие проверки типов
ArrayList list=new ArrayList(); list.Add(3); //
упаковка
list.Add(“string”); //нет проверки
Обобщенные типы Проблема Упаковка и распаковка Отсутствие проверки типов Явное преобразование
ArrayList list=new ArrayList(); list.Add(3); //
упаковка
list.Add(“string”); //нет проверки ...
//
явное преобразование
int val=(int)list[0];
Обобщенные типы Вариант решения Проверка типов Повышение производительности Удобство
ArrayList
нет упаковки
list.Add(“string”); //ошибка компиляции ...
// отсутствие явного преобразование int val=list[0];
Обобщенные типы Реализация в C# Реализуются на уровне .NET Framework Конструируются CLR, а не компилятором Содержат информацию о параметрах в метаданных Применимы для ссылок и величин Используют единый машинный код для всех ссылочных типов Возможность динамического создания Идентичны при использовании в любых местах
Обобщенные классы Как это выглядит?
public class ArrayList
Обобщенные классы Использование Классы Структуры Интерфейсы Делегаты Методы
Обобщенные классы Классы и структуры Компактность Простота public class HashTable
Обобщенные классы Интерфейсы Возможность реализации класса от интерфейса с заданным типом Возможность реализации универсального класса
public interface IComparer
Обобщенные классы Делегаты Возможность использовать обобщенные типы
delegate void OnActiveHandler
Обобщенные классы Методы Делаем универсальными нужные части Явное и неявное задание типа
public class GeneralComparer { } public static bool Compare
bool flag=GeneralComparer.Compare
bool flag=GeneralComparer.Compare(5,7);
Обобщенные классы Ограничения Расширение возможностей Устранение ошибок на этапе выполнения
public class MyClass
}
Обобщенные классы Преобразования T.default
void Foo
Проверка на Null Приведение типов
// Error // Ok void Foo
Обобщенные классы Коллекции System.Collections.Generic
Классы и Интерфейсы
IList
Частичные типы (Partial Types)
Частичные типы – один тип и много классов Идеальный способ для разделения кода и представления Удобство для разработчиков
Частичные типы
public partial class Customer { } private int id; public class Customer private string name; private string address; private List
Анонимные методы
Обработка событий без создания метода Использование локальных переменных
int count = 10; button1.Click += delegate(
object s, EventArgs a)
{ MessageBox.Show(count.ToString()); };
Анонимные методы
Обработка событий без создания метода Использование локальных переменных
int count = 10; button1.Click += delegate { MessageBox.Show(count.ToString()); };
Итераторы
foreach и интерфейсы IEnumerator, IEnumerable Создание качественного перечислителя – непростое дело Итератор – упрощает реализацию перечислителей
Итераторы
Реализация метода, возвращающего IEnumerator, IEnumerable, IEnumerator
Инициализация делегатов
Еще меньше лишнего кода
button1.Click += Button1_Click; private void Button1_Click( object s,EventArgs args) { MessageBox.Show("Hello"); }
Обнуляемые типы
T? - аналог System.Nullable
double? y = x; int? z = (int?)y; // double? --> int?
int j = (int)z; // int? --> double?
// int? --> int
Статические классы
Содержат только статические элементы
static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.EnableRTLMirroring(); Application.Run(new Form1()); } }
Управление предупреждениями
#pragma warning disable restore #pragma warning disable 0168 int i; #pragma warning restore 0168 int j;
Фиксированный буфер
Массивы заданного размера для взаимодействия с Win32 API
public struct OFSTRUCT { public byte cBytes; public byte fFixedDisk; public short nErrCode; private int Reserved1; private int Reserved2; public fixed char szPathName[128]; }
Видимость методов доступа
Возможность улучшения защиты для одного из методов доступа
public int Count { get { return count; } protected set { count = value; } }
WinForms – новые элементы
Улучшенный редактор Работа с маской ToolStrip, MenuStrip, StatusStrip, ContextMenuStrip Расположение элементов SplitContainer WebBrowser
Улучшенный редактор
Больше удобства при форматировании Поддержка Smart Tags
Работа с маской
ToolStrip, MenuStrip, StatusStrip, ContextMenuStrip Единый интерфейс (API) для панелей инструментов, меню, выпадающих меню и контекстных меню ToolStrip, MenuStrip, StatusStrip, ContextMenuStrip Элементы наследуют от ToolStripItem
Расположение компонентов SplitPanel Замена компонента Splitter Не использует Z-order Содержит splitter и две панели Вертикальное и горизонтальное расположение
Расположение компонентов FlowLayoutPanel Расположение в стиле HTML Автоматическое перераспределение дочерних компонентов Вертикальное и горизонтальное расположение Визуализация в режиме дизайна
Расположение компонентов TableLayoutPanel Табличное расположение в стиле HTML Объединение ячеек и колонок Различные варианты изменения размеров (absolute, percentage, autosizing) WYSIWYG-дизайнер
WebBrowser
ASP.NET – новые элементы
Работа с Master страницами Проверка ввода пользователя Некоторые простые элементы управления BulletedList FileUpload Panel Wizard Работа с пользователями И многое другое
Работа с Master страницами
Возможности и недостатки User Control Использование Master страниц для построения шаблонов Директива @Master <%@ Master Language="C#" %> Размещение содержимого
Проверка ввода пользователя
Проблемы в версии 1.х Объединение элементов в группы
Некоторые простые элементы
BulletedList FileUpload Panel Wizard
Работа с пользователями
Еще меньше работы Login LoginView PasswordRecovery LoginStatus LoginName CreateUserWizard ChangePassword
И многое другое
Навигация Работа с WebParts Новые элементы по работе с данными Модификация UI с помощью схем Поддержка профилей пользователя
ASP.NET – изменения в работе
Разделение кода и представления с помощью частичных типов Использование атрибута CompileWith
public partial class Default_aspx { }
<%@ Page Language="C#" CompileWith="Default.aspx.cs" ClassName="Default_aspx" %>
ASP.NET – изменения в работе
Из чего состоит проект - больше нет лишних файлов Компиляция в ASP.NET 2.0
поддержка специальных папок: App_code App_resources App_themes при первом доступе к странице возможность развертывания без исходных кодов
ASP.NET – изменения в работе
Использование разных языков
Вопросы
© 2004 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.