Операторы
Обновлен: Ноябрь 2007
Синтаксис операторов в C# сходен с синтаксисом других языков программирования в стиле языка C. Операторы используются для выполнения вычислений, назначения значений, проверки на равенство и неравенство и т. д.
В следующих разделах представлен список наиболее часто используемых операторов в C#. Полный список всех операторов см. в разделе Операторы C#.
Операторы равенства и назначения
В C# оператор знака равенства (=) имеет ту же функциональность, что и в C и C++.
Оператор |
Назначение |
---|---|
= |
Присваивание значения. |
== |
Проверка на равенство. |
Пример
int x = 100;
if (x == 100)
{
System.Console.WriteLine("X is equal to 100");
}
Логические и математические операторы
Далее представлен список основных математических операторов, указанных в порядке приоритета. Для упорядочения по другим принципам используйте скобки.
Оператор |
Назначение |
---|---|
*, /, % |
Умножение, деление, остаток от деления |
+, - |
Сложение, вычитание |
& |
Логическое И |
^ |
Логическое исключающее ИЛИ |
| |
Логическое ИЛИ |
Пример
int x = 1;
int y = x + 10 * 100; // multiplication first y = 1001
int z = (x + 10) * 100; // addition first z = 1100
Операторы увеличения и уменьшения
Поддерживаются сочетания клавиш в стиле языков C/C++, включая постфиксные и префиксные операторы, как показано в следующих примерах.
Оператор |
Назначение |
---|---|
v++ |
Увеличение переменной v на 1. |
v+=n |
Увеличение переменной v на n. |
v*=n |
Умножение переменной v на n. |
v-=n |
Вычитание n из переменной v. |
Пример
int x = 0;
int y = x++; // x is 1, y is 0
System.Console.WriteLine("{0} {1}", x, y);
int z = ++x; // x is 2, z is 2
System.Console.WriteLine("{0} {1}", x, z);
Реляционные операторы
Следующие операторы сравнивают два значения и возвращают логический результат.
Оператор |
Назначение |
---|---|
== |
Проверка на равенство. |
!= |
Проверка на неравенство. |
> |
Больше. |
< |
Меньше. |
>= |
Больше или равно. |
<= |
Меньше или равно. |
Пример
int x = int.Parse(System.Console.ReadLine());
if (x > 100)
{
System.Console.WriteLine("X is greater than 100");
}
Логические условные операторы
Логические операторы используются для создания более гибких условных инструкций путем объединения нескольких предложений.
Оператор |
Назначение |
---|---|
&& |
Условное И. |
|| |
Условное ИЛИ. |
! |
Условное НЕТ. |
Пример
int x = int.Parse(System.Console.ReadLine());
if ((x >= 100) && (x <= 200))
{
System.Console.WriteLine("X is between 100 and 200");
}
Несколько дополнительных математических операторов
Для выполнения более сложных математических операций, например в тригонометрии, используется класс платформ Math. В этом примере используются методы Sin (вычисление синуса) и Sqrt (вычисление квадратного корня) и константа PI.
Пример
double d = System.Math.Sin(System.Math.PI/2);
double e = System.Math.Sqrt(144);
Перегрузка операторов
C# поддерживает перегрузку операторов; благодаря этому можно переопределять операторы и использовать более значимые при работе с собственными типами данных. В следующем примере создается структура, которая хранит отдельный день недели в типе переменной, определенном перечислением. Дополнительные сведения см. в разделах Структуры и Перечисления. Оператор сложения является перегруженным, чтобы прибавлять целое число дней к текущему дню и возвращать новый день недели. Таким образом, прибавив один день к воскресенью, получаем понедельник.
Пример
using System;
// Define an DayOfWeek data type
enum DayOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
// Define a struct to store the methods and operators
struct Day
{
private DayOfWeek day;
// The constructor for the struct
public Day(DayOfWeek initialDay)
{
day = initialDay;
}
// The overloaded + operator
public static Day operator +(Day lhs, int rhs)
{
int intDay = (int)lhs.day;
return new Day((DayOfWeek)((intDay + rhs) % 7));
}
// An overloaded ToString method
public override string ToString()
{
return day.ToString();
}
}
public class Program
{
static void Main()
{
// Create a new Days object called "today"
Day today = new Day(DayOfWeek.Sunday);
Console.WriteLine(today.ToString());
today = today + 1;
Console.WriteLine(today.ToString());
today = today + 14;
Console.WriteLine(today.ToString());
}
}