その他のライブラリ

目次

キーワード

数学関数

System.Math クラスに、数学用の関数・定数などが定義されています。 表1に Math クラスのメンバを示します(全て static)。

表1: Math クラスのメンバ

メンバ名意味
定数PI円周率。
E自然対数の底
指数・対数関数Exp(x)exp(x)
Pow(x, y)xy
Log(x)loge x
Log(x, y)logy x
Log10(x, y)log10 x
三角関数Sin(x)sin(x)
Cos(x)cos(x)
Tan(x)tan(x)
逆三角関数Asin(x)sin-1(x)
Acos(x)cos-1(x)
Atan(x)tan-1(x)
Atan2(y, x)tan-1(
x
y
)
双曲線関数Sinh(x)sinh(x)
Cosh(x)cosh(x)
Tanh(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 × intlong を帰す乗算を行う。
DivRem(x, y, out res) 商と剰余を同時に計算する。 res に x % y を代入し、 x / y を帰す。
IEEERemainder(x, y) 剰余を計算する。 x % yx - 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 非ジェネリック版と同様。 整列済みの配列で実装された辞書。