Воскресенье, 19.05.2024, 12:40
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
База языка C# [3]
В данном разделе будут статьи по базовым понятиям языка C#
Основы языка С# [22]
Раздел продолжает рассматривать основы языка C#
Задачи [2]
примеры решения задач
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Поиск
Главная » Статьи » C# » Основы языка С#

Состав языка и типы данных

Состав языка
Алфавит – совокупность допустимых в языке символов. Алфавит языка С# включает:
1. прописные и строчные латинские буквы и буквы национальных алфавитов (включая кириллицу);
2. арабские цифры от 0 до 9, шестнадцатеричные цифры от A до F;
3. специальные знаки: " { } , | ; [ ] ( ) + - / % * . \ ' : ? < = > ! & ~ ^ @ _
4. пробельные символы: пробел, символ табуляции, символ перехода на новую строку.
Из символов алфавита формируются лексемы языка: идентификаторы, ключевые (зарезервированные) слова, знаки операций, константы, разделители (скобки, точка, запятая, пробельные символы).
Границы лексем определяются другими лексемами, такими, как разделители или знаки операций. В свою очередь лексемы входят в состав выражений (выражение задает правило вычисления некоторого значения) и операторов (оператор задает законченное описание некоторого действия).
Идентификатор – это имя программного элемента: константы, переменной, метки, типа, класса, объекта, метода и т.д. Идентификатор может включать латинские буквы и буквы национальных алфавитов, цифры и символ подчеркивания. Прописные и строчные буквы различаются, например, myname, myName и MyName — три различных имени. Первым символом идентификатора может быть буква или знак подчеркивания, но не цифра.
Пробелы и другие разделители внутри имен не допускаются. Язык С# не налагает никаких ограничений на длину имен, однако для удобства чтения и записи кода не стоит делать их слишком длинными.
Для улучшения читабельности кода программным элементам следует давать осмысленные имена, составленные в соответствии с определенными правилами. Существует несколько видов нотаций – соглашений о правилах создания имен.
В нотации Pascal каждое слово, входящее в идентификатор, начинается с заглавной буквы. Например:Age, LastName, TimeOfDeath.
Венгерская нотация отличается от предыдущей наличием префикса, соответствующего типу величины. Например: fAge, sName, iTime.
В нотации Camel с заглавной буквы начинается каждое слово идентификатора, кроме первого. Например: age, lastName, timeOfDeath.
Наиболее часто используются нотации Pascal или Camel. Однако в простых программах будут использоваться однобуквенные переменные.
Ключевые слова – это зарезервированные идентификаторы, которые имеют специальное значение для компилятора, например, static, int и т.д. Ключевые слова можно использовать только по прямому назначению. Однако если перед ключевым словом поставить символ @, например, @int, @static, то полученное имя можно использовать в качестве идентификатора. С полным перечнем ключевых слов и их назначением можно ознакомиться в справочной системе С#.
Замечание. Другие лексемы (знаки операций и константы), а также правила формирования выражений и различные виды операторов будут рассмотрены чуть позже.

 

Типы данных
С# является языком со строгой типизацией. В нем необходимо объявлять тип всех создаваемых программных элементов (например, переменных, объектов, окон, кнопок и т.д.), что позволяет среде CLR предотвращать возникновение ошибок, следя за тем, чтобы объектам присваивались значения только разрешенного типа. Тип программного элемента
сообщает компилятору о его размере (например, тип int показывает, что объект занимает 4 байта) и возможностях (например, кнопка может быть нарисована, нажата и т. д.).
В С# типы делятся на три группы:
1. базовые типы – предлагаемые языком;
2. типы, определяемые пользователем;
3. анонимные типы - типы, которые автоматически создаются на основе инициализаторов объектов (начиная с версии С# 3.0).
Кроме того, типы С# разбиваются на две другие категории: размерные типы (value type) и ссылочные типы (reference type). Почти все базовые типы являются размерными типами. Исключение составляют типы Object и String, которые являются базовыми, но ссылочными типами данных. Все пользовательские типы, кроме структур, являются ссылочными. Дополнительно к упомянутым типам, язык С# поддерживает типы указателей, однако они используются только с неуправляемым кодом.
Принципиальное различие между размерными и ссылочными типами состоит в способе хранения их значений в памяти. В первом случае фактическое значение хранится в стеке (или как часть большого объекта ссылочного типа). Адрес переменной ссылочного типа тоже хранится в стеке, но сам объект хранится в куче.
Стек – это структура, используемая для хранения элементов по принципу LIFO (Last input – first output или первым ушел - последним пришел). В данном случае под стеком понимается область памяти, обслуживаемая процессором, в которой хранятся значения локальных переменных.
Куча – область памяти, используемая для хранения данных, работа с которыми реализуется через указатели и ссылки. Память для размещения таких данных выделяется программистом динамически, а освобождается сборщиком мусора.
Сборщик мусора уничтожает программные элементы в стеке через некоторое время после того, как закончит существование раздел стека, в котором они объявлены. То есть, если в пределах блока (фрагмента кода, помещенного в фигурные скобки {}) объявлена локальная переменная, соответствующий программный элемент будет удален по окончании работы данного блока. Объект в куче подвергается сборке мусора через некоторое время после того, как уничтожена последняя ссылка на него.
Язык С# предлагает обычный набор базовых типов, каждому из них соответствует тип, поддерживаемый общеязыковой спецификацией .NET (CLS).

Тип в языке C# Размер в байтах Тип .NET Описание
Базовый тип
object   Object Может хранить все что угодно, т.к. является всеобщим предком
Логический тип
bool 1 Boolean true или false
Целые типы
sbyte 1 SByte Целое со знаком (от -128 до 127)
byte 1 Byte Целое без знака (от 0 до 255)
short 2 Int16 Целое со знаком (от -32768 до 32767)
ushort 2 UInt16 Целое без знака (от 0 до 65535)
int 4 Int32 Целое со знаком (от -2147483648 до 2147483647)
uint 4 UInt32 Целое число без знака ( от 0 до 4 294 967 295)
long 8 Int64 Целое со знаком (от -9223372036854775808 до 9223372036854775807)
ulong 8 UInt64 Целое без знака (от 0 до 0fffffffffffffff)
Вещественные типы
float 4 Single Число с плавающей точкой двойной точности. Содержит значения приблизительно от ±1.5*10-45 до ±3.4*1038 c 7 значащими цифрами
double 8 Double Число с плавающей точкой двойной точности. Содержит значения приблизительно от ±5. 0*10-324 до ±1.7*10308 c 15-16 значащими цифрами
Символьный тип
char 2 Сhar Символ Unicode
Строковый тип
string   String Строка из Unicode-символов
Финансовый тип
decimal 12 Decimal Число до 28 знаков с фиксированным положением десятичной точки. Обычно используется в финансовых расчетах и требует суффикса <<m>> или <<М>>

 

Категория: Основы языка С# | Добавил: solowey (16.01.2016)
Просмотров: 2998 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Вход на сайт