Степень в си шарп
Арифметические и логические операции в Си-шарп
В этом уроке мы поговорим об арифметических и логических операциях, без которых сложно представить любую программу.
Все операции делятся на два типа: унарные и бинарные. К унарным относятся операции, в которых участвует один операнд. В бинарных операциях – два операнда. Операнд – это данные, которые принимают участие в операции. Например, оператор сложения «+» – бинарный 2+3, здесь операндами являются числа 2 и 3. Список бинарных арифметических операций приведен в таблице:
При делении двух целых чисел результатом также будет целое число. Например при делении 9/5 результатом будет число 1. Чтобы получить точный результат с десятичной точкой, нужно чтобы делимое и/или делитель были типа float или double. Например, при делении 9 / 5f (суффикс f указывает, что данная константа типа float) результатом будет 1.8.
Оператор «%» возвращает остаток от деления. Результатом операции 9 % 5 будет 4. Примером применения оператора «%» может быть процесс проверки числа на четность. Для этого мы ищем остаток от деления числа на 2. Если число четное, результатом будет 0, если нечетное – 1.
Чтобы повысить приоритет операции, используются скобки, как и в обычной арифметике.
При использовании оператора «+» для строк, он выполняет операцию конкатенации. Конкатенация – объединение нескольких объектов (например строк) в один.
static void Main(string[] args)
<
string str1 = «Hello», str2 = «World»;
Console.WriteLine(str1 + «, » + str2); //выводит на экран «Hello, World»
>
Унарные операторы в Си-шарп
Унарных арифметических операторов в Си-шарп есть всего два: инкрементация «++» и декрементация «—»;
Инкрементация увеличивает операнд на единицу, а декрементация — уменьшает на единицу.
static void Main(string[] args)
<
int a = 0, b = 5;
a++; // a=1;
b—; // b=4
>
Инкрементация и декрементация может быть префиксной и постфиксной. При Префиксной форме оператор стоит перед операндом, а при постфиксной-после.
Префиксная форма сначала увеличивает(уменьшает) значение, и после этого выполняются остальные действия, а при постфиксной форме наоборот — сначала выполнятся все действия, а после увеличится(уменьшится) значение:
static void Main(string[] args)
<
int a = 2, b = 3, c, d = 3;
c = a + ++b; // c = 6, сначала инкремент, потом сложение
с = a + d++; // c = 5, сначала сложение, потом инкремент
>
Везде где можно использовать инкрементацию/декрементацию стоит это делать, так как она работает быстрее оператора сложения/вычитания.
В Си-шарп также есть возможность использования краткой формы выражения:
static void Main(string[] args)
<
int a = 2, b = 3;
a += b; // равноценно выражению a = a + b;
a -= b; // равноценно выражению a = a — b;
a *= b; // равноценно выражению a = a * b;
a /= b; // равноценно выражению a = a / b;
a %= b; // равноценно выражению a = a % b;
>
Класс Math
В классе Math собраны все основные тригонометрические функции, функция возведение числа в степень, нахождение квадратного корня и другие.
Для возведения числа в степень, используется функция Pow([число], [степень]);
static void Main(string[] args)
<
float a, b = 9;
a = (float) Math.Pow(b, 2); // возводим переменную b в степень 2. Pow() возвращает результат в типе данных double, поэтому мы тут применили явное преобразование. Конечно, можно было обойтись без преобразования, объявив переменную a типа double
Console.WriteLine(a); // выводит на экран число 81
Console.ReadKey();
>
Для нахождения квадратного корня служит функция Sqrt([число]); возвращаемый результат также в типе данных double
static void Main(string[] args)
<
double a, b = 9;
a = Math.Sqrt(b);
Console.WriteLine(a); // выводит на экран число 3
Console.ReadKey();
>
Для нахождения косинуса и синуса используются cos([угол в радианах]) и sin([угол в радианах]) соответственно.
180 [градусов] = пи [радиан].
Чтобы перевести градусы в радианы, необходимо значение в градусах умножить на Пи и разделить на 180. Число Пи объявлено константой в классе Math.
static void Main(string[] args)
<
double a;
a = Math.Cos(60 * Math.PI / 180); // переводим 60 градусов в радианы
Console.WriteLine(a); // выводит на экран 0.5
a = Math.Sin(60 * Math.PI / 180);
Console.WriteLine(a); // выводит на экран 0.866…
Console.ReadKey();
>
Логические операторы в Си-шарп
Логические операторы в Си-шарп служат для работы с логическим типом данных (bool), который может принимать только два значения – true или false. Их можно разделить на две категории: простые логические операторы и операторы сравнения.
В Си-шарп есть следующие логические операторы:
! – оператор «НЕ» является унарным и возвращает противоположное значение операнда.
static void Main(string[] args)
<
bool a, b = true, c = false;
a = !b; // a = false
a = !c; // a = true
>
|| — оператор «ИЛИ» является бинарным и возвращает false только тогда, когда оба операнда равны false, в остальных случаях результат будет true;
static void Main(string[] args)
<
bool a, bTrue = true, bFalse = false;
a = bFalse || bFalse; // a = false
a = bFalse || bTrue; // a = true
a = bTrue || bFalse; // a = true
a = bTrue || bTrue; // a = true
>
static void Main(string[] args)
<
bool a, bTrue = true, bFalse = false;
a = bFalse && bFalse; // a = false
a = bFalse && bTrue; // a = false
a = bTrue && bFalse; // a = false
a = bTrue && bTrue; // a = true
>
10 фич в C#, о которых вы определённо должны узнать и начать их использовать
- Переводы, 15 декабря 2016 в 2:28
Если вы только начали изучение C# или же решили расширить свои знания, мы нашли для вас 10 фич, знание которых позволит вам избежать ошибок, писать более понятный код и сохранить кучу времени.
1. async / await
Использование паттернов async / await позволяет разблокировать UI / текущий поток во время выполнения блочных операторов. Паттерны async / await позволяют коду продолжить выполнение, даже если что-то блокирует его выполнение (например, веб-запрос).
2. Инициализаторы объектов / массивов / коллекций
Данный пример может быть особенно полезен в юнит-тестировании, но в других случаях лучше использовать конструкторы.
3. Лямбды, предикаты, делегаты и замыкания
Эти фичи просто незаменимы во многих случаях: например, при использовании LINQ. Поэтому рекомендуем вам убедиться, что вы действительно понимаете, когда и как их использовать.
4. ?? (Оператор объединения с NULL)
x ?? y — возвращает x , если значение отличается от null ; в противном случае возвращает y .
Может быть несколько операторов .
?? также может быть использован для перевода типов null в не null :
5. $”” (Интерполяция строк) — C# 6
Фича в C# 6 позволяет эффективно и элегантно собирать строки:
6. ?.(определяет null) — C# 6
x?.y — доступ к членам, определяемый условием null . Возвращает значение null , если левый операнд имеет значение null .
Больше никаких NullReferenceExceptions!
7. Выражение nameof — C# 6
Может показаться, что выражение nameof не особо полезно, но это не так. При использовании автоматических инструментов рефакторинга (например, ReSharper) иногда может потребоваться обратиться к аргументу метода по его имени:
Вот, как это должно быть:
8. Инициализаторы свойств (property) — C# 6
Инициализаторы свойств позволяют задавать начальные значения для свойств:
Польза их использования заключается в том, что вы не можете объявить setter, тем самым делая свойства неизменяемыми. Инициализаторы свойств хорошо работают в связке с синтаксисом первичного конструктора в C# 6.
9. Операторы as и is
Is — совместимость типов. Возвращает значение true, если вычисленный левый операнд может быть приведен к типу, указанному в правом операнде (статический тип).
As — преобразование типов. Возвращает левый операнд, приведенный к типу, заданному правым операндом (статический тип), но as возвращает null , где (T)x вызывает исключение.
10. Ключевое слово yield
Ключевое слово yield позволяет заполнить интерфейс IEnumerable объектами (items). Следующий пример вернет все степени двойки от 2 до 2 в степени 8 (то есть 2, 4, 8, 16, 32, 128, 256):
В правильных руках yield — очень мощная вещь. Оно позволяет с легкостью генерировать последовательность объектов, то есть системе не придется перечислять всю коллекцию целиком — это может быть сделано по требованию.
Типы данных в языке C#
Данные, с которыми оперируют человек и компьютер, существуют в какой-либо форме: числа, текст, графика, звук, видео.
В компьютере эти данные хранятся в определенном виде – в двоичных кодах. Так одно число может кодироваться 1, 2, 4, 8 и более байтами, текст рассматривается как набор символов (1 или 2 байта каждый).
Поэтому можно говорить о типах данных, каждый из которых должен обрабатываться по своим правилам. Дальше мы узнаем, как они связаны с классами и структурами.
Типы данных имеют особое значение в C#, потому что это строго типизированный язык. Все операции подвергаются строгому контролю со стороны компилятора на соответствие типов, причем недопустимые операции не компилируются. Следовательно, контроль типов позволяет исключить ошибки и повысить надежность программ.
Для обеспечения контроля типов все переменные, выражения и значения должны принадлежать к определенному типу. Такого понятия, как «бестиповая» переменная, в данном языке программирования вообще не существует. Более того, тип значения определяет те операции, которые разрешается выполнять над ним. Операция, разрешенная для одного типа данных, может оказаться недопустимой для другого.
В C# имеются две общие категории встроенных типов данных: типы значений (value type) и ссылочные типы (reference type). Их классификация приведена на рисунке.
Понятие «встроенные типы данных» означает, что для определения переменной выбранного типа вам достаточно указать одно из ключевых слов, указанных в прямоугольниках, и через пробел идентификатор переменной, завершив запись «;», например:
double d;
string s;
Первый оператор объявления переменной d обеспечит ее размещение в стеке, зарезервировав для ее значения ровно 8 байт. Второй оператор зарезервирует место в стеке для ссылки на строку s, содержимое которой после ее инициализации разместится в куче.
Пояснение терминов:
Стек (stack) и куча (heap) относятся к различным сегментам оперативной памяти.
Стек — это область оперативной памяти, которая создаётся для каждого потока. Он работает в порядке LIFO (Last In, First Out), то есть последний добавленный в стек кусок памяти будет первым в очереди на вывод из стека.
Каждый раз, когда функция объявляет новую переменную, она добавляется в стек, а когда эта переменная пропадает из области видимости (например, когда функция заканчивается), она автоматически удаляется из стека. Когда стековая переменная освобождается, эта область памяти становится доступной для других стековых переменных.
Из-за такой природы стека управление памятью оказывается весьма логичным и простым для выполнения на ЦП; это приводит к высокой скорости, в особенности потому, что время цикла обновления байта стека очень мало, т.е. этот байт скорее всего привязан к кэшу процессора.
Тем не менее, у такой строгой формы управления есть и недостатки. Размер стека — это фиксированная величина, и превышение лимита выделенной на стеке памяти приведёт к переполнению стека. Размер задаётся при создании потока, и у каждой переменной есть максимальный размер, зависящий от типа данных.
Это позволяет ограничивать размер некоторых переменных (например, целочисленных), и вынуждает заранее объявлять размер более сложных типов данных (например, массивов), поскольку стек не позволит им изменить его. Кроме того, переменные, расположенные на стеке, всегда являются локальными.
В итоге стек позволяет управлять памятью наиболее эффективным образом — но если вам нужно использовать динамические структуры данных или глобальные переменные, то стоит обратить внимание на кучу.
Куча — это хранилище памяти, также расположенное в ОЗУ, которое допускает динамическое выделение памяти и не работает по принципу стека: это просто склад для ваших переменных.
Когда вы выделяете в куче участок памяти для хранения переменной, к ней можно обратиться не только в потоке, но и во всем приложении. Именно так определяются глобальные переменные. По завершении приложения все выделенные участки памяти освобождаются.
Размер кучи задаётся при запуске приложения, но, в отличие от стека, он ограничен лишь физически, и это позволяет создавать динамические переменные.
Вы взаимодействуете с кучей посредством ссылок, обычно называемых указателями — это переменные, чьи значения являются адресами других переменных. Создавая указатель, вы указываете на местоположение памяти в куче, что задаёт начальное значение переменной и говорит программе, где получить доступ к этому значению.
В языке C# предусмотрена (в отличие от C, C++) автоматические сборщики мусора, поэтому разработчику не нужно вручную освобождать участки памяти, которые больше не нужны.
В сравнении со стеком, куча работает медленнее, поскольку переменные разбросаны по памяти, а не сидят на верхушке стека. Некорректное управление памятью в куче приводит к замедлению её работы; тем не менее, это не уменьшает её важности — если вам нужно работать с динамическими или глобальными переменными, пользуйтесь кучей.
Заключение . Вы познакомились с понятиями стека и кучи.
Вкратце, стек — это очень быстрое хранилище памяти, работающее по принципу LIFO и управляемое процессором. Но эти преимущества приводят к ограниченному размеру стека и специальному способу получения значений.
Для того, чтобы избежать этих ограничений, можно пользоваться кучей — она позволяет создавать динамические и глобальные переменные — но управлять памятью должен либо сборщик мусора, либо сам программист, да и работает куча медленнее.
В .NET Framework, например, к типу значений с плавающей точкой относится тип double (ключевое слово, псевдоним типа). Любое число этого типа занимает ровно 8 байт оперативной памяти. А число типа decimal занимает уже 16 байт (128 бит). Ключевое слово char используется для представления символа Юникода. Значение символа char представляет собой 16-разрядное числовое (порядковое) значение.
Степень в си шарп
Приложение «Калькулятор» На первом занятии мы уже создавали простое приложение. Создадим ещё одно, назовём его Lesson2, и рассмотрим некоторые свойства формы и визуальных элементов. При этом мы будем создавать приложение «калькулятор». Итак, сначала присвоим форме заголовок «Калькулятор» (не путать с именем формы). Заголовок задаётся свойством Text. Панель свойств находится в правой части экрана.
Покрасим форму, например, в темно-синий цвет. Для этого найдём в редакторе свойств строку BackColor и выпадающем списке выберем нужный цвет.
Мы будем делать немного нетрадиционный калькулятор, в отличие, например от Windows калькулятора. Он будет иметь отдельные строки для ввода аргументов, знака математического действия и результата вычислений.
Поставим на форму четыре текстовых поля textBox1 . textBox4 сверху вниз.
Напротив каждого текстового поля поставим метки Label и в свойстве Text меток введём надписи, показанные на рисунке. Цвет надписей меток можно изменить свойством ForeColor.
Добавим кнопку и создадим событие на нажатие кнопки «Вычислить». Событие можно создать двойным щелчком на выделенной кнопке или, на панели свойств и событий, переключиться на раздел события (Properties) и выбрать событие Click.
Так же, двойным щелчком следует создать событие button1_Click. Допишем в полученную функцию обработчика события следующие строки (помечены синим цветом):
private void button1_Click(object sender, EventArgs e)
<
double x, y, z;
string znak = «»;
x = Convert.ToDouble(textBox1.Text);
y = Convert.ToDouble(textBox3.Text);
z = 0;
znak = textBox2.Text;
if (znak == «+») z = x + y; else
if (znak == «-«) z = x — y; else
if (znak == «/») z = x / y; else
if (znak == «*») z = x * y; else
textBox4.Text = Convert.ToString(z);
>
Объявление переменных и способы записи выражений. Рассмотрим подробно все строки написанные в функции обработчика события.
Строка double x, y, z; — объявляет три переменные x, y и z (x и y — для вводимых значений и z для хранения результата вычислений) типа double. Тип double выбран с тем расчётом, что калькулятор должен уметь вычислять максимально большие числа.
При объявлении переменных любого типа им присваивается имя. Имя переменной должно начинаться с латинской буквы за которой могут следовать числа, например x256. Переменная может быть словом, например означающем назначение переменной input_x, out_y. Несколько переменных одного типа записываются через запятую. Выражение объявления переменных завершается точкой с запятой. При объявлении имени переменной и последующему её вызову в программе, регистр символов имеет значение. Так переменные Input_x и input_x являются независимыми, то есть это не одна переменная, а две.
Следующая строка программы string znak = «»; объявляет переменную znak (для хранения знака математической операции) типа string — строка и сразу этой переменной присваивается начальное значение — пустая строка.
Строка x = Convert.ToDouble(textBox1.Text); преобразует первую числовую строку введённую пользователем в textBox1 в число и присваивает это число переменной x. Аналогичное назначение следующей строки — преобразование и присваивание числа переменной y.
В строке z = 0; присваиваем начальное значение переменной z. В языке C# принято инициализировать переменные до обращения к ним из программы. Если не написать эту строку то компилятор (компилятор — программа преобразующая текст программы в цифровой код понятный для ЭВМ) выдаст предупреждающее сообщение, но программа всё равно будет работоспособна.
Строкой znak = textBox2.Text; мы получаем символ знака оперции введённый пользователем в textBox2 и присваиваем его переменной znak.
Далее, нам нужно проверить какой знак операции ввёл пользователь. Строка if (znak == «+») z = x + y; определяет ввёл ли пользователь знак +. Прочитать эту строку можно так: Если (if) переменная знак (znak) равна символу «+» то результат вычисления будет z = x + y. В скобках выражения записана проверка истинности выражения.
Для проверки истинности выражений в операторе if следует использовать следующие знаки сравнения:
== проверка равенства
!= проверка неравенства
больше
= больше или равно
Следующие три строки:
if (znak == «-«) z = x — y; else
if (znak == «/») z = x / y; else
if (znak == «*») z = x * y; else
выполняют проверку на ввод остальных математических знаков и, соответственно, производят вычисления. Слово else в конце каждой строки означает «иначе», то есть, если условие не выполнено, то иначе нужно проверить следующее условие.
И, наконец, строка textBox4.Text = Convert.ToString(z); выводит полученное значение z в textBox4. В связи с тем, что переменная z числового типа, а вывести в textBox4 мы можем только строковый тип, то нужно преобразовать число в строку функцией Convert.ToString.
Калькулятор готов, можно проверить его работоспособность нажав клавишу F5.
Примечание — при вводе чисел с плавающей запятой, в Windows принято вводить разделитель запятую, а не точку, как это принято в DOS.
Логические операции. Известно, что при делении на 0 возникает ошибка. Попробуем исключить такую ошибку, если пользователь введёт знаменателем 0. Доработаем строку определяющую ввод знака деления:
В этой строке мы написали: если знак равен наклонной черте ((znak == «/») и && второй аргумент (знаменатель) равен 0 (y == 0) то выводится сообщение об ошибке MessageBox.Show(«Ошибка! Деление на 0»); иначе else можно вычислить результат деления z = x / y;. Из этой строки видно, что сложные логические выражения записываются в скобках. В сложных логических конструкциях следует использовать следующие операторы:
&& — логическое «И»
|| — логическое «ИЛИ»
Введя изменения, посмотрим, как работает программа в такой ситуации.
Встроенные математические функции. Итак, калькулятор готов, но производить только арифметические действия не тнтересно, поэтому расширим возможности нашего калькулятора введя вычисление некоторых математических функций. Язык C# имеет большую коллекцию функций математической обработки данных, основные из них приведены в таблице:
Основы C# | Комментарии C# и переменные
комментарии c# и переменные c#
C# является одним из наиболее распространённых языков программирования, который позволяет разрабатывать различные виды приложений на платформах .NET Framework и Windows, а также веб-службы XML, баз данных, клиент-серверного ПО и др. Наиболее часто в качестве редактора и компилятора кодов используется среда Visual C#, отличающаяся удобными конструкторами, понятным пользовательским интерфейсом, интегрированным отладчиком и многими другими инструментами, упрощающими создание прикладных программ. Здесь мы рассмотрим самые базовые понятия комментарии C# и переменные.
Особенности языка C#
C# отличается очень богатым синтаксисом, который в то же время является простым и удобным. Особенно легко даётся изучение программистам, которые уже владеют знаниями и навыками работы с языками С, С++ и Java. C# сочетает в себе все преимущества этих языков, при этом не имеет их недостатков. Одним из основных достоинств «шарпа» является наличие мощных функций, и предоставление прямого доступа к операционной памяти.
«Шарп» пользуется универсальными методами, интеграторами и типами данных, обеспечивающими наивысшую безопасность и производительность разработки программ. Характерной чертой языка является наличие выражений LINQ, с помощью которых можно создавать очень удобные кодовые конструкции со строго типизированными запросами.
C# относится к объектно-ориентированным языкам, который имеет строгую типизацию. Каждая переменная и метод (в том числе входная точка Main), инкапсулируется при определении классов, при этом из родительского класса можно реализовывать неограниченное количество интерфейсов.
Также C# предоставляет инновационные языковые конструкции, упрощающие разработку приложений:
- сигнатура метода (называемая делегатом), позволяющая реализовывать безопасное оповещение о происходящем событии;
- свойство, определяющее функции акцессора для закрытой переменной;
- атрибут, предоставляющий данные о типе функции/переменной/объекта при написании кода;
- внутристрочное комментирование (для XML-документов);
- LINQ – языковой запрос в отношении различных источников данных.
Чтобы взаимодействовать с другими программными обеспечениями типа Windows (объекты COM, собственные библиотеки DLL), язык C# имеет процесс «Взаимодействия». Они позволяют приложениям, написанным на «шарпе», выполнять практически все действия и функции, которые прописаны машинным кодом C++. Также языком C# поддерживается набор указателей и «небезопасных» блоков кода в тех случаях, когда критически важно наличие прямого доступа к операционной памяти.
Основы синтаксиса языка C#
Я планирую написать серию статей посвященным основам разработки на языке C#. Здесь будут рассмотрены только две первых темы, это комментарии и переменные. Также мы создадим наше первое приложение Hello World. Продолжение обучение будет доступно по мере написания статей по ссылкам в конце статьи. Итак, приступим.
Комментарии C#
Комментарии в коде — это текстовые пометки в исходном коде приложения, которые не влияют на сам исходный код, а служат только для повышения удобочитаемости и понятности кода. В них чаще всего содержатся пояснения к сложным участкам кода.
Не смотря на то, что комментарии C# не несут никакой полезной нагрузки для самого приложения, они просто невероятно полезны для долгосрочного поддержания проекта, потому что бывает очень сложно разобраться в чужом коде. А если принять за правило утверждение, что любой написанный самим тобой код, про прошествии полугода становиться «чужим», то я настаиваю, что писать комментарии полезно и нужно. Да, есть противоположное мнение, что код должен быть самодокументированным (то есть понятным для чтения без комментариев), но я придерживаюсь мнения, что даже к такому коду лучше оставлять комментарии C#.
Итак, в языке C# используются два вида комментариев:
- Однострочные (//)- распространяются до перехода на новую строку
- Многострочные (/**/)- распространяются на все строки в промежутке между ключевыми символами.
Комментарии C# в первую очередь нужны, чтобы оставлять заметки которые могут пригодиться в будущем вам или другому программисту, который будет поддерживать ваш код. Кроме того, комментарии часто используются на этапе отладки приложения, чтобы временно пропускать некоторые команды. По оформлению комментариев существует рекомендация добавлять пробел после //, начинать писать новое предложение комментария с большой буквы, а длинное перенесенное с новой строки с маленькой, в конце комментария ставить точку.
Также обязательно используйте комментарии XML-документации ко всем открытым методам, свойствам и конструкторам класса, а желательно вообще ко всем. Это позволяет отображать подсказки использовании. Для добавления этого комментария в Visual Stuio достаточно поставить три символа слеша (///) перед именем метода, свойства и конструктора, и шаблон комментария будет сгенерирован автоматически. Подробнее про формат этих комментариев можно прочитать в документации Micosoft.
Переменные C#
Переменная является одним из базовых понятий в программировании, которое пришло в него из математики. Переменная — это контейнер для хранения информации, имеющий собственное имя. Если рассматривать глубже с технической точки зрения, переменная — это определенная область памяти в системе, к которой можно обращаться для чтения и записи по уникальному в пределах области видимости имени. Если рассматривать с обывательской точки зрения, то переменную можно представить как коробку, на которой наклеен стикер с номером. В коробку мы можем положить что угодно (что может туда поместиться), посмотреть, что там лежит, или вытащить и положить что-либо другое. И мы всегда можем найти конкретную коробку по ее номеру. Так и переменные позволяют сохранять, читать, изменять и удалять нужные нам данные по удобному и понятному имени.
Язык C# является строготипизированным, это означает, что если мы объявили переменную для целых чисел, мы не сможем в ней хранить текстовые данные. Давайте рассмотрим основные наиболее часто используемые типы данных в языке C#
- string — текстовая строка
- int — целое число (от -2 147 483 648 до 2 147 483 647)
- double — дробное число с плавающей запятой
- bool — логическое значение (истина/ложь)
- char — буквенный символ
- decimal — дробное число с фиксированной запятой
- byte — маленькое целое число (от 0 до 255)
- long — большое целое число (от 9 223 372 036 854 775 808 до 9 223 372 036 854 775 807)
- object — базовый тип всего языка
Стоить заметить, что это далеко не полный список всех типов данных. Здесь перечислены только самые часто используемые. Существуют также модифицированные типы данных, такие как uint, которые позволяют задать значения больше нуля, но большего диапазона (в данном случае будет от 0 до 65535). Или наоборот sbyte (от -128 до 127). Но давайте рассмотрим примеры.
Перечислим особенности переменных некоторых типов данных: для отделения дробной части от целой используется символ точки, а не запятой. Строки задаются только в двойных кавычках, а символы только в одинарных. Для типа данных decimal при не пустой дробной части обязательно использование постфикса M. Логический тип принимает одно из двух логических значений true — истина, false — ложь. Отрицательные числа задаться с помощью символа минус перед числом.
Нотации в языке C#
Одну из основных рекомендаций которую я могу дать, это всегда используйте понятные и лаконичные называния для переменных. Имя переменной всегда должно подробно и однозначно описывать собственное содержимое. Лучше всего вообще отказаться от использования односимвольных переменных в коде, иначе отладка ад. В Microsoft docs есть подробная статья о рекомендациях по именованию в языке, но если говорить очень коротко, то можно выделить три популярных стиля именования (нотация):
- Pascal casing — Все первые буквы в имени переменной пишутся с заглавными. Слова соединяются без разделителя.
- Camel casing — Первые слова в имени переменной пишутся с большой буквы, за исключением первого, который тоже пишется с маленькой. Слова соединяются без разделителя.
- Snake casing — Все буквы пишутся строчными. Слова соединяются через символ подчеркивания (_)
В соответствии для этого можно сделать следующие рекомендации:
Pascal для имен классов, свойств, конструкторов, методов, делегатов, событий.
Camel для локальных переменных, аргументов методов.
Snake вообще лучше не использовать. Или только для констант.
Первое приложение на языке C#
Для разработки на языке C# чаще всего используется среда программирования Microsoft Visual Studio. У нее достаточно много версий и редакций, некоторые из них платные, некоторые бесплатные. Я рекомендую на начальном этапе использовать среду самую свежую на текущий момент бесплатную версию Visual Studio Community 2017. Скачиваете, устанавливаете, запускаете и видите главное окно. Здесь вам нужно в меню Новый проект выбрать элемент Консольное приложение (.NET Framework).
Если его не будет в списке, то нажмите на ссылку Создать новый проект расположенную ниже. Проверьте в левом меню, что выбрано консольное приложение или при необходимости найдите и выберите его, после чего введите имя проекта и нажмите ОК.
В открывшимся окне редактора исходного кода вводим следующий код
После чего нажимаем клавишу F5 или кнопку Пуск вверху приложения
После чего выполнится компиляция и запуск приложения. Мы увидим консольное приложение, которое просто выведет текст на экран. Если после этого нажать клавишу Enter, приложение завершит свою работу.
Это самый элементарный пример, который очень часто используется в программировании.
Работа с GitHub
Если нет желания вручную набирать исходный код, можно воспользоваться системой контроля версий, и скачать этот пример готовым из репозитория github. Для этого перейди по ссылке, и нажми на кнопку Clone or Download. В открывшимся окне выбери Open in Visual Studio (если установлено расширение GitHub для Visula Studio) или Download ZIP.
Если ты нажмешь на Open in Visual Studio, то появится еще одно окно подтверждения. Нажимай на кнопку Открыть.
После этого у тебя на компьютере запустится приложение Visual Studio и в обозревателе команд будет автоматически выставлены настройки клонирования проекта. Нужно только нажать кнопку Клонировать.
После загрузки приложения в Обозревателе решений щелкни на файл решения (.sln), и получишь готовый к использованию проект.
Если Расширение Github для Visual Studio у тебя не было установлено, то после загрузки просто распакуй скаченный архив в любую удобную тебе папку на компьютере и открой файл решения. Получишь тот же результат.
На этом мы завершим наш вводный урок посвященный основам языка C#. Кроме того, рекомендую прочитать статью Связный список C# — Linked List C#. А также подписывайтесь на группу ВКонтакте, Telegram и YouTube-канал. Там еще больше полезного и интересного для программистов. И не забывайте оставлять комментарии C# в коде своих проектов