Операторы

Обновлен: Ноябрь 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());
    }
}

См. также

Основные понятия

Основы языка C#

Ссылки

Операторы C#