演算子 (Visual C# Express)

更新 : 2007 年 11 月

C# の演算子は、他の C スタイルのプログラミング言語と同様の構文を備えています。演算子は、計算、変数への値の代入、等値であるかどうかの評価、およびその他の演算の実行に使用されます。

ここでは、C# で最もよく使用される演算子のいくつかを一覧表示します。すべての演算子の一覧については、「C# の演算子」を参照してください。

代入演算子と等値演算子

C# における等号 (=) 演算子は、C および C++ の場合と同じ機能を提供します。

演算子

目的

=

値の代入

==

等値であるかどうかの評価

int x = 100;
if (x == 100)
{
    System.Console.WriteLine("X is equal to 100");
}

算術演算子および論理演算子

次に、基本的な算術演算子を優先度の高い順に一覧します。順序付けを強制するには、かっこを使用します。

演算子

目的

*, /, %

乗算、除算、剰余

+, -

加算、減算

&

論理 AND

^

論理 XOR

|

論理 OR

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

変数 v から n を減算。

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);

関係演算子

次の演算子は、2 つの値を比較して ブール値の結果を返します。

演算子

目的

==

等しい。

!=

等しくない。

>

より大きい。

<

より小さい。

>=

以上。

<=

以下。

int x = int.Parse(System.Console.ReadLine());

if (x > 100)
{
    System.Console.WriteLine("X is greater than 100");
}

論理条件演算子

論理演算子を使用して複数の句を結合し、より柔軟な条件付きステートメントを作成できます。

演算子

目的

&&

条件 AND

||

条件 OR

!

条件 NOT

int x = int.Parse(System.Console.ReadLine());

if ((x >= 100) && (x <= 200))
{
    System.Console.WriteLine("X is between 100 and 200");
}

高度な算術演算子

三角法などの高度な算術演算を実行するには、Math Frameworks クラスを使用します。この例では、Sin (サイン) メソッド、Sqrt (平方根) メソッド、PI 定数が使用されています。

double d = System.Math.Sin(System.Math.PI/2);
double e = System.Math.Sqrt(144);

演算子のオーバーロード

C# では、演算子のオーバーロードがサポートされています。これにより、独自のデータ型を使用するときに演算子をよりわかりやすく再定義できます。次の例では構造体を作成します。この構造体は、列挙体で定義されている変数の型に 1 つの曜日を格納します。詳細については、「構造体 (Visual C# Express)」および「列挙型 (Visual C# Express)」を参照してください。加算演算子がオーバーロードされるため、現在の日に日数 (整数値) を加算し、新しい曜日を返すことができます。したがって、日曜日に 1 日が加算され、月曜日が返されます。

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# の演算子