Найти в Дзене

Основы C#. Часть 1. Типы данных, переменные, основные операции с ними

Оглавление

Объявление и присвоение значения

Язык C#, в отличие от Python, относится к строго типизированным языкам. Мы должны указывать тип данных для переменных который не может меняться в процессе работы программы.

Например, в Python мы пишем i=3, и интерпретатор знает, что i — целое число, потому что они так объявляются. В следующей строке мы напишем i="3", и это уже будет строка, длиной в 1 символ. В C# объявления переменных длиннее:

int i; //объявление переменной
i=3; //присвоение значения

В языке C# после символов "//" пишется комментарий. Он не компилируется, и туда можно написать любые ваши мысли. Пишите информативные комментарии, если пишите их.

Объявление и присвоение значения можно проводить в одну строку:

int i = 3;

В общем виде объявление переменных выглядит так:

Type VariableName = Value;
  • Type — тип переменной;
  • VariableName — имя переменной;
  • Value — значение переменной\

Переменным следует назначать понятные и отличимые имена. Помните, что ваш код будут читать (когда-нибудь и вы сами), и лучше облегчить задачу. Например, name, _name и Name — 3 разные переменные, но в коде их легко можно будет перепутать. Также переменную нельзя называть ключевыми словами языка C#.

Значение переменной должно соответствовать её типу (иначе Visual Studio подсветит ошибку, а код не скомпилируется).

Типы данных

Рассмотрим основные типы данных, которые будут применяться в коде. Для каждого типа я буду приводить ссылку на справку Microsoft (компании-разработчика языка C# и платформы .NET).

В справке довольно много информации, непонятной на первый взгляд, но много и полезного: можно найти все свойства и методы данных типов.

1. String (или string, далее в скобках указываю краткое имя, при его наличии) — строковый тип данных. Записывается в кавычках, может иметь длину от 0 до ~1 миллиарда символов. Состоит из символов и может рассматриваться как массив символов (с массивами мы познакомимся позже).

string Name = "Eduard";

2. Char (char) — символ. Объявляется в одинарных скобках. В плагинах для Revit используется редко. Важно знать, что строки состоят их элементов типа char.

char Liter = 'A';

3. Boolean (bool) — Логический тип Да/Нет. Может принимать значения только true/false;

bool IsSelected = true;
bool IsCreated = false;

4. Int32 (int) — Целое число. Имеет значение от -2 147 483 648 до 2 147 483 648. Занимает 4 байта. Чаще всего вы будете использовать именно его, хотя это не единственный тип целого

int i = 0;

4.1 Int16 (short) — целое от -32768 до 32768. Занимает 2 байта

short s = 1;

4.2 Int64 (long) — целое с модулем, не превышающим 9 223 372 036 854 775 808. В Revit 2024 ElementId имеет тип long (ранее был int). Занимает 8 байт.

long l = 9 223 372 036 854 775 807;

При операциях с числами важно помнить о максимальном значение и возможной ошибке переполнения. Пример:

short s = 32767+32765; //Вызовет OverFlowException

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

5. Double (double) — число двойной точности с плавающей запятой. Наиболее часто встречающийся числовой тип. Также иногда используются float (число одинарной точности) и decimal (число повышенной точности для банковских вычислений).

double d = 12.5;
float f = 1.3f; // без суффикса f будет ошибка
decimal d = 1.465m; // без суффикса m будет ошибка

Операторы

1. Оператор присваивания (=). С этим мы уже встречались: этот оператор присваивает значение переменной. И да, важно помнить, что это не оператор равенства.

2. Оператор равенства (==). Возвращает логический тип bool в зависимости от результата выражения. Чаще всего используют в условных выражениях

bool b = (6== 8); //false
bool c = (1==1); // true
if (c == true)
{
//do something
}

Первые 2 строки этого кода следует читать так:

Объявим переменную b типом bool, и запишем в неё результат вычисления выражения (6==8). Так как 6 не равно 8, в переменную запишется false. И да, скобки тут можно убрать.

3. Арифметические операторы:

  • +, -, *, / — сложение, умножение, вычитание, деление

Рекомендуется проводить операции между данными одного типа, чтобы избежать непредсказуемого поведения. Double нормально умножится на int, а вот поделить int на double не выйдет. Если мы в int запишем результат деления int на int, то дробная часть исчезнет:

int a = 5+3; // Результат — 8
double d = 5.0 -1.2; // Результат — 3.8
int b = 17/6; //Результат — 2
double f = 17/6; Результат — 2.833333...;
  • % — взятие остатка от целочисленного деления
int b = 17%6; //Результат — 5
  • Инкремент (++) и декремент (--)

Иногда в коде нужно добавить единицу к переменной (счётчику цикла), и записать в неё же. Например

int i = 5;
i = i+1; // i == 6

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

Запись можно упростить:

int i = 5;
i ++; // i == 6

Аналогично:

int i = 5;
i = i--; // i == 4

При подготовке статьи использованы материалы с сайта https://metanit.com/sharp/tutorial/ (Глава 2). На нём же вы можете более подробно узнать о других типах данных и операциях. Так же я опирался на информацию с сайта Microsoft (конкретные ссылки — в тексте) и на собственный опыт.

А уже в следующей статье мы с вами попробуем создать первый простейший плагин для Revit.

Мой телеграм-канал о Revit API. Подписывайтесь, буду рад видеть вас там!