implicit (C# リファレンス)
更新 : 2007 年 11 月
implicit キーワードを使用して、暗黙のユーザー定義型変換演算子を宣言します。変換を実行してもデータ損失が発生する心配がない場合に、ユーザー定義型からその他の型、またはその他の型からユーザー型への暗黙の型変換を有効にするために使用します。
使用例
class Digit
{
public Digit(double d) { val = d; }
public double val;
// ...other members
// User-defined conversion from Digit to double
public static implicit operator double(Digit d)
{
return d.val;
}
// User-defined conversion from double to Digit
public static implicit operator Digit(double d)
{
return new Digit(d);
}
}
class Program
{
static void Main(string[] args)
{
Digit dig = new Digit(7);
//This call invokes the implicit "double" operator
double num = dig;
//This call invokes the implicit "Digit" operator
Digit dig2 = 12;
Console.WriteLine("num = {0} dig2 = {1}", num, dig2.val);
Console.ReadLine();
}
}
}
不要なキャストを省けるため、暗黙の型変換を行う場合はソース コードが読みやすくなります。ただし、暗黙の型変換では、一方の型からもう一方の型へ明示的にキャストする必要がないため、予期しない結果が発生しないように注意する必要があります。暗黙の演算子は、通常、プログラマが変換を認識していなくても安全に使用できるように、変換中に例外をスローしたり情報を失ったりしないことが必要です。このような条件を満たせない変換演算子には、explicit キーワードを使用する必要があります。詳細については、「変換演算子の使用 (C# プログラミング ガイド)」を参照してください。
C# 言語仕様
詳細については、「C# 言語仕様」の次のセクションを参照してください。
6.1 暗黙の変換
10.9.3 変換演算子
参照
処理手順
方法 : 構造体間にユーザー定義の変換を実装する (C# プログラミング ガイド)