演算子 (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());
}
}