
БД / Лекция1_Введение
.pdfРаздел№1
Проектирование и разработка типов на языке C# в соответствии со стандартами принятыми в спецификации CTS (Система общих типов).
Лекция №1
Введение. Общие сведения о системе общих типов (CTS). Типы значений и ссылочные типы. Встроенные типы. Определение типа: атрибуты; модификаторы; имя; базовый тип данного типа; интерфейсы, реализованные этим типом; члены типа. Модификаторы для членов типа. Ключевые слова, которые влияют на определение типа или члена типа.
Введение.
Литература
1. Спецификация языка C#. Доступна на веб-узле MSDN Online в Центре разработчиков Visual C# http://www.microsoft.com/en-us/download/details.aspx?id=7029 или в Visual Studio в каталоге установки
\VC#\Specifications\...
2.Библиотека MSDN http://msdn.microsoft.com/ru-ru/library/default.aspx
3.Джеффри Рихтер CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C# Питер, Русская Редакция 2007
Средства разработки и языки программирования
C# – это простой, современный, типобезопасный, объектно-ориентированный язык программирования.
Язык C# стандартизирован ECMA на соответствие стандарту ECMA-334, а также ISO/IEC на соответствие
стандарту ISO/IEC 23270.
Необходимо установить:
1.распространяемое бесплатно средство разработки:
Microsoft Visual C# 2008 Express Edition (Microsoft Visual C# 2008, экспресс-выпуск);
Экспресс-выпуск доступен для скачивания по ссылке: http://www.microsoft.com/visualstudio/ru-ru/products/2008-editions/express
2.и распространяемый бесплатно пакет:
.NET Framework, который устанавливается автоматически при установке Microsoft Visual C# 2008 Express
Edition.
Cреда разработки Microsoft Visual Studio включает: средства управления проектами, редактор исходного текста, компиляторы, компоновщики, документацию, отладчики, конструкторы пользовательского интерфейса …
Документация по Использованию интегрированной среды разработки Visual C# доступна по ссылке: http://msdn.microsoft.com/ru-ru/library/h8w79z10(v=vs.90),
Построение и отладка Visual C# по ссылке http://msdn.microsoft.com/ru-ru/library/ms173083(v=vs.90)
.NET Framework — платформа разработки. Основными компонентами .NET Framework являются:
•общеязыковая среда исполнения (common language runtime, CLR) предоставляет объектно-
ориентированную модель программирования;
•библиотека классов (Framework Class Library, FCL) предоставляет объектно-
ориентированный интерфейс, используемый всеми моделями приложений;

Пример кода на языке C#.
Примеры по Созданию консольных приложений (Visual C#) доступны по ссылке
http://msdn.microsoft.com/ru-ru/library/452fz12a(v=vs.90)
Пример. Создание консольного приложения Visual C# Console Application.
//директива using с перечислением пространств имен библиотеки классов платформы .NET Framework
//определяет префикс System
using System;
// объявление собственного пространства имен namespace ConsoleApplication2
{
//Класс Program объявлен с единственным членом - статическим методом Main class Program
{
//Метод Main - точка входа в программу static void Main(string[] args)
{
string text;
Console.Write("Введите текст\n"); text = Console.ReadLine();
//статический метод WriteLine–класса Console пространства имен System Console.WriteLine(text);
}
}
}
Результат выполнения программы:
Метод Main объявляется внутри класса или структуры.
Файлы исходного кода С# имеют расширение .cs. C# программы состоят из одного или более исходных файлов. При компиляции C# программ получаются сборки. Сборки имеют расширение .exe или .dll,
они реализованы как приложения или как библиотеки.
Общие сведения о системе общих типов (CTS).
Система общих типов определяет способ объявления, использования и управления типами во время выполнения.

Типы и переменные
There are two kinds of types in C#: value types and reference types.
Система общих типов поддерживает две общие категории типов: типы значений и ссылочные типы.
Переменные типа значений содержат данные.
Переменные ссылочного типа хранят ссылки на соответствующие данные (объекты).
К типам значений в C# относятся простые типы, перечисляемые типы, типы структур и обнуляемые типы. К ссылочным типам в C# относятся типы классов, типы интерфейсов, типы массивов и типы делегатов.
Система общих типов CTS в платформе .NET Framework поддерживает следующие категории
типов: (из Спецификации языка C# версии 3.0)
Category |
|
Description |
|
|
|
Value |
Simple types |
Signed integral: sbyte, short, int, long |
types |
|
|
|
Unsigned integral: byte, ushort, uint, ulong |
|
|
|
|
|
|
|
|
|
Unicode characters: char |
|
|
|
|
|
IEEE floating point: float, double |
|
|
|
|
|
High-precision decimal: decimal |
|
|
|
|
|
Boolean: bool |
|
|
|
|
Enum types |
User-defined types of the form enum E {...} |
|
|
|
|
Struct types |
User-defined types of the form struct S {...} |
|
|
|
|
Nullable types |
Extensions of all other value types with a null value |
|
|
|
Reference |
Class types |
Ultimate base class of all other types: object |
types |
|
|
|
Unicode strings: string |
|
|
|
|
|
|
|
|
|
User-defined types of the form class C {...} |
|
|
|
|
Interface types |
User-defined types of the form interface I {...} |
|
|
|
|
Array types |
Singleand multi-dimensional, for example, int[] and |
|
|
int[,] |
|
|
|
|
Delegate types |
User-defined types of the form e.g. delegate int D(...) |
|
|
|
Для создания нового типа в программах на языке C# его необходимо определить. Можно определить пять пользовательских типов: классы, структуры, интерфейсы, перечисления и делегаты.
Классы и объекты
Класс — это структура данных, объединяющая состояние (поля) и действия (методы и другие функции-
члены). Экземпляры класса создаются с помощью оператора new. Класс может содержать
статические члены или члены экземпляра. Статические члены принадлежат классам. Члены экземпляра принадлежат объектам (экземплярам класса).

В типе можно определить следующие члены: (Джеффри Рихтер CLR via C#. Программирование на
платформе Microsoft .NET Framework 2.0 на языке C# Питер, Русская Редакция 2007)
Константа. Идентификатор, определяющий постоянную величину. Константы связаны с типом, а не с экземпляром.
Поле. Представляет неизменяемое или изменяемое значение. Поле может быть статическим – тогда оно является частью типа и экземплярным - тогда оно является частью объекта.
Метод. Представляет собой функцию, выполняющую операции, которые изменяют или запрашивают состояние типа (статический метод) или объекта (экземплярный метод).
Конструктор экземпляра– метод, используемый для инициализации полей экземпляра при его создании.
Конструктор типа – метод, используемый для инициализации статических полей типа.
Свойство. Для того чтобы можно было изменить значение (получить значение) закрытой переменной,
необходимо использовать свойства или функции доступа (accessors). Для вызывающей стороны этот член выглядит как поле, но в реализации типа он выглядит как метод.
Перегруженный оператор.
Оператор преобразования.
Событие.
Тип. Позволяет определять другие вложенные в него типы.
Встроенные числовые типы (из Спецификации языка C# версии 3.0).
Category |
Bits |
Type |
Range/Precision |
||
|
|
|
|
||
Signed |
8 |
sbyte |
–128...127 |
||
integral |
|
|
|
|
|
16 |
short |
–32,768...32,767 |
|||
|
|||||
|
|
|
|
||
|
32 |
int |
–2,147,483,648...2,147,483,647 |
||
|
|
|
|
||
|
64 |
long |
–9,223,372,036,854,775,808...9,223,372,036,854,775,807 |
||
|
|
|
|
||
Unsigned |
8 |
byte |
0...255 |
||
integral |
|
|
|
|
|
16 |
ushort |
0...65,535 |
|||
|
|||||
|
|
|
|
||
|
32 |
uint |
0...4,294,967,295 |
||
|
|
|
|
||
|
64 |
ulong |
0...18,446,744,073,709,551,615 |
||
|
|
|
|
|
|
Floating |
32 |
float |
1.5 |
× 10−45 to 3.4 × 1038, 7-digit precision |
|
point |
|
|
|
|
|
64 |
double |
5.0 |
× 10−324 to 1.7 × 10308, 15-digit precision |
||
|
|
|
|
|
|
Decimal |
128 |
decimal |
1.0 |
× 10−28 to 7.9 × 1028, 28-digit precision |
|
|
|
|
|
|
Тип bool используется для представления логических значений true или false.
Тип char используется для объявления символа Юникода (кода UTF-16).

Для создания переменных в программах C# используются оператор объявления. В операторе объявления необходимо указать тип и имя создаваемой переменной. Каждая переменная по значению должна быть инициализирована перед использованием. Простые типы можно инициализировать с помощью литералов.
Пример. Объявление и инициализация целых чисел со знаком. Форматирование числовых результатов при
выводе данных на консоль.
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
sbyte sByte1 = 127; short x = 32767; int i = 123;
long long1 = 4294967296;
Console.WriteLine("Переменная sbyte{0,4:d} Переменная short{1,6:d} " +
" Переменная int{2,4:d} Переменная long{3,11:d}", sByte1, x, i,long1);
}
}
}
Для форматирования числовых результатов при выводе данных на консоль можно использовать составное форматирование. Общая форма записи спецификатора формата в составном форматировании имеет следующий вид: {номер_ аргумента[, ширина][: формат]}. Парные фигурные скобки ("{" и "}") здесь обязательны.
номер_ аргумента – описатель параметра, число, определяющее соответствующий объект из списка;
индексация элементов ведется от нуля. Например, если имеется три объекта, то можно отформатировать сначала второй, а затем первый и третий объекты, задав следующую строку составного форматирования: "{1} {0} {2}".
Необязательный компонент ширина (alignment) — это целое число со знаком, которое служит для указания желательной ширины поля форматирования.
Необязательный компонент формат — это строка формата, соответствующая типу форматируемого объекта.
Пример. Объявление и инициализация чисел с плавающей запятой и десятичной переменной. Форматирование числовых результатов.
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
float x = 3.5555F; double y = 3.5555; decimal myMoney = 300.5m;
Console.WriteLine("Переменная float {0:f} Переменная double {1:f}" + " Переменная decimal {2:c}", x, y, myMoney);
}
}
}
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
float x = 3.5555F; double y = 3.5555; decimal myMoney = 300.5m;
Console.WriteLine("Переменная float {0:##.#} Переменная double {1:#.###}" + "Переменная decimal {2:c}", x, y, myMoney);
}
}
}
Литералы
Литерал — это представление значения в исходном коде.
Символьные литералы
char[] chars = new char[4]; |
|
||||
chars[0] = 'X'; |
// Character |
literal |
|||
chars[1] = '\x0058'; |
// Hexadecimal |
||||
chars[2] |
= |
(char)88; |
// |
Cast from |
integral type |
chars[3] |
= |
'\u0058'; |
// |
Unicode |
|
логические литералы
true false
Литерал_null
null
Целочисленные литералы
Цифры от 0 до 9. Чтобы указать, что литерал представляет собой число без знака, он снабжается
суффиксом u или U, например:
uint i = 12u;
Console.WriteLine("{0:d}", i);
Суффиксы l или L применяются для создания литералов типа long и ulong:
long i = 1222L;
Console.WriteLine("{0:d}", i);
шестнадцатеричные числа
long i = 0xFFFF;
Console.WriteLine("{0:x}", i);
Литералы с плавающей точкой
float i = 10.0f;
Console.WriteLine("{0:f}", i);
double i = -3.7E-10D;
Console.WriteLine("{0:e}", i);
Строковые литералы
string i = "eeeeee\nyyyyyyyyy";
Console.WriteLine(i);
В языке С# строковый литерал может иметь префикс @. Он задает так называемый
буквальный литерал
string i =@"c:\";
Console.WriteLine(i);
Подробнее в спецификации языка C#.
Встроенные числовые типы являются структурами, и к их свойствам и методам и другим членам можно получить
доступ.