Основные понятия языка С#


Содержание:
1.     Основные понятия языка C#
2.     Встроенные типы С# и системные типы
3.     Переменные, константы.

1.     Основные понятия языка С#
Подобен языкам Java, C++ и VB, однако является компонентно-ориентированным и более безопасным
Добавлен ряд новых черт (делегаты, индексаторы, механизм (un)boxing и др.)

Сходство с Java:
объектно-ориентированный (единственное наследование)
интерфейсы
исключения
нити (threads)
пространство имен
сильная (строгая) типизация
сборка мусора
отражение (reflection)
динамическая загрузка кода         
Сходство с С++:
"перегруженные операторы"
арифметические операции с плавающей точкой относятся к небезопасному коду
некоторые особенности синтаксиса

 К числу принципиально важных решений, которые реализованы корпорацией Microsoft в языке программирования C#, можно отнести следующие:
-компонентно-ориентированный подход к программированию (который характерен и для идеологии Microsoft .NET в целом);
-свойства как средство инкапсуляции данных (характерно также в целом для ООП);
-обработка событий (имеются расширения, в том числе в части обработки исключений, в частности, оператор try);
-унифицированная система типизации (соответствует идеологии Microsoft .NET в целом);
-делегаты (delegate – развитие указателя на функцию в языках C и C++);
индексаторы (indexer – операторы индекса для обращения к элементам класса-контейнера);
-перегруженные операторы (развитие ООП);
-оператор foreach (обработка всех элементов классов-коллекций, аналог Visual Basic);
-механизмы boxing и unboxing для преобразования типов;
-атрибуты (средство оперирования метаданными в COM-модели);
-прямоугольные массивы (набор элементов с доступом по номеру индекса и одинаковым количеством столбцов и строк).
2. Встроенные типы С# и системные типы

В С# существует множество встроенных или простых типов. Любой встроенный тип С# -  это псевдоним для системного типа,определённого в пространстве имён System.

Простые типы С# и системные типы
Простой тип С#
Системный тип
Диапазон значений
Описание типа
sbyte
SByte
-128…+128
Число со знаком занимает 1 байт
byte
Byte
0…255
Чісло без знака занимает 1 байт
short
Int16
-32768…32667
Короткое 16 битовое число со знаком (2байта)
ushort
Uint16
0…65535
короткое 16 битовое число без знака
int
Int32
-21474836482147483647
Целое 32 битовое число со знаком
uint
Uint32
0…4294967295
Целое 32 битовое  без знака целое число
long
Uint64
0…18446744073709551615
Знаковое 64-битное целое число(8 байт)
ulong

0…2^64-1
64  битное 8 байтное целое число без знака
char
Char
2 байта для расширенной таблицы кодов символов
Один 16 битовый символ Юникод
float
Single
 -3.40282e+0383.40282e+038
Вещественное число одинарной точности с плавающей запятой, занимающее 32 бита или 4 байта
double
Double
-1.79769e+3081.79769e+308
Вещественное число двойной точности с плавающей запятой, занимает 64 бита либо 8 байт
bool
Boolean
True or False
Логические данные
decimal
Decimal
10^0…10^28
Число фиксированной точности или 12 байт
string
String
Ограниченно системной памятью
Строка символов
object
Object
Практически всё что угодно. Все типы происходят от класса System.Object поэтому объектом является всё

У всех встроенных типов есть значение по умолчанию (0-для числовых, false-bool, nullstring, object; но в методах классов переменные нужно инициализировать).

Системные имена называют также структурами типов значений. Структуры имеют методы. Например Int32 - Parse(string) преобразует строку символов string в число.
3.            Переменные и константы
Константы
 Константа - это объект, значение которого известно еще до начала работы программы. Константы необходимы для оформления наглядных программ, незаменимы при использовании в тексте программы многократно повторяемых значений, удобны в случае необходимости изменения этих значений сразу во всей программе.
 Константа хранит значение, присваиваемое по завершении компиляции программы, и никогда после этого не изменяется. Константы объявляются помощью ключевого слова const; их использование способствует повышению удобочитаемости кода. В языке существует два вида констант:
 неименованные константы (цифры и числа, символы и строки, множества);
 именованные константы;

Неименованные константы

 Неименованные константы не имеют имен, и потому их не нужно описывать. Тип неименованной константы определяется автоматически, по умолчанию:
 любая последовательность цифр (возможно, предваряемая знаком "-" или "+" или разбиваемая одной точкой) воспринимается компилятором как неименованная константа - число (целое или вещественное);
 любая последовательность символов, заключенная в апострофы, воспринимается как неименованная константа - строка;
 любая последовательность целых чисел, либо символов через запятую, обрамленная квадратными скобками, воспринимается как неименованная константа - множество.

 Кроме того, существуют две специальные константы true и false, относящиеся к логическому типу данных. Примерами использования неименованных констант могут послужить следующие операторы:
a = -10;
b = 12.075 + х;
c = 'z';
d = "abc" + string44;

Именованные константы

 Именованные константы, как следует из их названия, должны иметь имя. Стало быть, эти имена необходимо сообщить компилятору, то есть описать в специальном разделе const.

 Если не указывать тип константы, то по ее внешнему виду компилятор сам определит, к какому (базовому) типу ее отнести. Любую уже описанную константу можно использовать при объявлении других констант, переменных и типов данных. Вот несколько примеров описания нетипизированных именованных констант:
const int speedLimit = 55;
const double pi = 3.14159265358979323846264338327950;
Переменные
 В C# переменные объявляются с определенным типом данных и надписью. Если ранее вам приходилось работать со слабо типизированными языками, например JScript, вы привыкли использовать один тип "var" для всех переменных, то в C# необходимо указать тип переменной: int, float, byte, short или другой из более чем 20 различных типов данных. Тип указывает, помимо всего прочего, точный объем памяти, который следует выделить для хранения значения при выполнении приложения. При преобразовании переменной из одного типа в другой язык C# следует определенным правилам. Пример:
int i;
int answer = 42;
string greeting = "Hello, World!";
double bigNumber = 1e100;
Console.WriteLine("{0} {1} {2}", answer, greeting, bigNumber);

Идентификаторы

 Имена операторов, переменных, констант, типов величин, имя самой программы назначаются программистом и называются идентификаторами. Существуют правила, которым должны отвечать все идентификаторы:
 идентификатор должен быть уникальным, то есть одним и тем же именем разные объекты не могут быть названы;
 идентификатор имеет ограничение по длине (зависит от конкретной реализации языка на компьютере);
 идентификатор может состоять только из символов латинского алфавита, цифр и знака подчеркивания ("_"), регистр букв имеет значение;
 идентификатор не может начинаться с цифры.
//допустимые имена
x  ,  s5  ,  Ax6 ,  D_f  , _Fm5 , xM_5 , _128

 Имена - это идентификаторы. Любая случайным образом составленная последовательность букв, цифр и знаков подчёркивания с точки зрения грамматики языка идеально подходит на роль имени любого объекта, если только она начинающаяся с буквы. Фрагмент программы, содержащий подобную переменную, будет синтаксически безупречен.

 И всё же имеет смысл воспользоваться дополнительной возможностью облегчить восприятие и понимание последовательностей операторов. Для этого достаточно закодировать с помощью имён содержательную информацию.

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

 Вы можете давать программным объектам любые имена, но необходимо, чтобы они отличались от зарезервированных слов, используемых языком, потому что компилятор все равно не примет переменные с "чужими" именами.