В Паскале, при определении типа данных задавалось:
Класс содержит:
Объекты - экземпляры класса, являются обобщением понятия переменной.
На первых порах можно считать, что:
Понятия класс и тип синонимы, переменная и объект также синонимы.
Встроенные типы, такие как int или string, называют по-прежнему типами, а их экземпляры - переменными.
Для абстрактных данных, описывающих, например, класс млекопитающих вместо типа говорят класс, а вместо переменной - объект.
Такой взгляд на типы и классы довольно полезен, но он не является полным.
Для значимых типов используется прямая адресация, значение хранит собственно данные, и память для них отводится в стеке.
Стек это область памяти, поддерживаемая процессором. Доступ к стеку во много раз быстрее, чем к общей области памяти.
Для ссылочных типов значением служит ссылка на некоторый объект, расположенный в динамической памяти - "куче". Несколько ссылочных переменных могут указывать на один и тот же объект и использовать его значения.
В языке C# жестко определено, какие типы относятся к ссылочным, а какие - к значимым.
К значимым типам относятся: логический, арифметические, структуры, перечисление.
К ссылочным типам относятся: массивы, строки и классы.
Все встроенные типы C# однозначно отображаются, а фактически совпадают с системными типами каркаса Net Framework, размещенными в пространстве имен System. Поэтому всюду, где можно использовать имя типа, например, int, с тем же успехом можно использовать и имя Int32.
Название | Имя типа C# | Тип в Framework | Диапазон значений | Кол-во бит |
---|---|---|---|---|
Булевский | bool | Boolean | true, false | 8 |
Целые | sbyte | SByte | –128 — 127 | 8 |
byte | Byte | 0 — 255 | 8 | |
int | Int32 | –2*109 — 2*109 | 32 | |
long | Int64 | –9*1018 — 9*1018 | 64 | |
Действительные | float | Single | 1.5*10-45 — 3.4*1038 | 32 |
double | Double | 5.0*10-324 — 1.7*10308 | 64 | |
Символьные типы | char | Char | U+0000 — U+ffff | 16 |
string | String | строка из символов Unicode | - |
Примеры:
int i; int a = 42; string g = "Hello, World!"; // в двойных кавычках char c=‘*’ // в одинарных кавычках double b = 1.2, d=45.6; |
Все переменные в программе обязательно должны быть инициализированы (должны иметь начальное значение)!!!
Переменные существуют только в своей области видимости, при выходе из которой переменная "умирает".
Область видимости переменной начинается в строке, где переменная объявлена и кончается на закрывающей фигурной скобке (переменная должна быть объявлена между этой скобкой и парной к ней открывающей).
Вот поясняющий пример:
int k=3; Console.WriteLine(k); |
Тут значение переменной k доступно и выведется на экран.
{ int k=3; } Console.WriteLine(k); |
В этом же примере вывести k на экран не получится - она умерла на закрывающей фигурной скобке.
Вот несколько примеров описания именованных констант:
const int st = 55; const double pi = 3.14159265358979323846264338; |
При вводе вещественных констант в программе можно использовать специальные суффиксы в конце:
const double x = 37D; const float x = 35F; |