System.Math クラスに、数学用の関数・定数などが定義されています。 表1に Math クラスのメンバを示します(全て static)。
表1: Math クラスのメンバ
| メンバ名 | 意味 | ||
|---|---|---|---|
| 定数 | PI | 円周率。 | |
E | 自然対数の底 | ||
| 指数・対数関数 | Exp(x) | ||
Pow(x, y) | |||
Log(x) | |||
Log(x, y) | |||
Log10(x, y) | |||
| 三角関数 | Sin(x) | ||
Cos(x) | |||
Tan(x) | |||
| 逆三角関数 | Asin(x) | ||
Acos(x) | |||
Atan(x) | |||
Atan2(y, x) |
| ||
| 双曲線関数 | Sinh(x) | ||
Cosh(x) | |||
Tanh(x) | |||
| 整数化 | Floor(x) | x の床(x 以下の最大の整数)。 | |
Ceiling(x) | x の天井(x 以上の最小の整数)。 | ||
Round(x) | x を四捨五入。 | ||
| その他の数学関数 | Abs(x) | x の絶対値。 | |
Sign(x) | x 符号。x が正ならば1、負ならば-1、0ならば0。 | ||
Sqrt(x) | x の平方根。 | ||
| 最大・最小 | Max(x, y) | x, y のうち、大きい方を帰す。 | |
Min(x, y) | x, y のうち、小さい方を帰す。 | ||
| その他 | BigMul(x, y) | int × int で long を帰す乗算を行う。 | |
DivRem(x, y, out res) |
商と剰余を同時に計算する。
res に x % y を代入し、
x / y を帰す。
| ||
IEEERemainder(x, y) |
剰余を計算する。
x % y が x - Math.Floor(x / y) * y なのに対して、
この関数は x - Math.Round(x / y) * y を帰す。
|
Console.Write("{0}\n", Math.Sin(2.0 / 3.0 * Math.PI)); Console.Write("{0}\n", Math.Log10(10000)); Console.Write("{0}\n", Math.Pow(2, 8));
0.866025403784439 4 256
時刻は System.DateTime、 時刻の差、すなわち経過時間は System.TimeSpan クラスで表されます。
DateTime t = DateTime.Now; Console.Write("{0}\n", t); Console.Write("{0}/{1,2}/{2,2} ({3}) {4,2}:{5:d02}:{6:d02}\n", t.Year, t.Month, t.Day, t.DayOfWeek, t.Hour, t.Minute, t.Second); Console.Write("エンターキーを押して"); Console.ReadLine(); TimeSpan ts = DateTime.Now - t; Console.Write("キーを押すまでの時間: {0}[ms]", ts.TotalSeconds);
2005/09/21 16:51:44 2005/ 9/21 (Wednesday) 16:51:44 エンターキーを押して キーを押すまでの時間: 2.6738448[ms]
System.Collections 名前空間以下に、 さまざまなコレクションクラスがあります。
表2: コレクションクラス
| クラス名 | 概要 | |
|---|---|---|
| シーケンス | ArrayList | 配列で実装されたリストです。 インデクサ による要素のランダムアクセスが可能です。 |
Stack | FILO(first in last out:先入れ後出し)式のコレクション。 | |
Queue | FIFO(first in fast out:先入れ先出し)式のコレクション。 | |
| 辞書 | Hashtable | 名前の通り、ハッシュテーブルで実装された辞書。 (キー, 値)のペアの順序は完全に失われます。 値の挿入も、キーによる検索も高速です。 (十分に大きなキャパシティにしておけば、非常に高速) |
SortedList | 整列済みの配列で実装された辞書。 (キー, 値)のペアは、 キーの大小によってソートされた状態になります。 値の挿入には時間がかかりますが、 キーによる検索は非常に高速です。 | |
| ビット配列 | BitArray | 例えば、ある変数 x の n ビット目が1か0かを調べるには、(x & (1 << (n - 1))) != 0 と言うように書きますが、このビット配列を用いると、BitArray a; a[n] というように書けます。 |
少し細くすると、
シーケンスと言うのは順番に意味のあるコレクションの事をいいます。
int 型で番号を指定して、インデクサで a[i] と言うようにアクセスできたり、
「先に入れた値ほど先に出てくる」、
「後に入れた値ほど先に出てくる」など、値の追加・取り出しに順序があります。
一方、辞書というのは、値とキーのペアを持っていて、
キーによって値を検索できるものです。
例えば、キーの型を string、値の型を int とすると、
a["keyword"] = 5; というように、
キーの型を引数とするインデクサによる値の読み書きができます。
Ver. 2.0
.NET Framework 2.0 では、の導入に伴い、 ジェネリック版のコレクションクラスが追加されました。 ジェネリックコレクションクラスは System.Collections.Generic 名前空間以下にあります。
表3: ジェネリックコレクション
| クラス名 | 概要 | |
|---|---|---|
| シーケンス | List | 非ジェネリック版の ArrayList に相当。 配列で実装されたリストです。 |
LinkedList | 連結リストです。 要素のランダムアクセスはできませんが、 シーケンスの末尾以外への要素の挿入が高速に行えます。 | |
Stack | 非ジェネリック版と同様。 FILO 式のコレクションです。 | |
Queue | 非ジェネリック版と同様。 FIFO 式のコレクションです。 | |
| 辞書 | Dictionary | 非ジェネリック版の Hashtable に相当。 ハッシュテーブルで実装された辞書です。 |
SortedDictionary | 二分探索木(赤黒木)で実装された辞書。 (キー, 値)のペアは、 キーの大小によってソートされた状態になります。 値の挿入も、キーによる検索も高速です。 | |
SortedList | 非ジェネリック版と同様。 整列済みの配列で実装された辞書。 |