implicit と explicitについて調べたメモ
どんな機能か?
どちらも実装したクラスから、キャストを行う事が出来るようにする変換演算子。 違いとしては、「暗黙的なキャスト(implicit)」か「明示的なキャストが必要(explicit)」かの違い
サンプルソースコード
explicitを実装したクラス
public class ExplicitSample { public int a; public ExplicitSample() { a = 5; } public static explicit operator int (ExplicitSample sample) { return sample.a; } }
implicitを実装したクラス
public class ImplicitSample { public int b; public ImplicitSample() { b = 4; } public static implicit operator int (ImplicitSample sample) { return sample.b; } }
それぞれを使用したクラス On Unity
public class castSample : MonoBehaviour { // Use this for initialization void Start() { //明示的なキャストでの実装 ExplicitSample a = new ExplicitSample(); int b = (int)a; int f = a;//コンパイルエラー ImplicitSample c = new ImplicitSample(); int d = c; int e = (int)c;//冗長といわれるが、これもコンパイルいける short g = c;//これはコンパイルエラー } }
まとめ
- implicit と explicit はキャストを行うための 変換演算子
- implicit は 暗黙的にキャストができる変換演算子
- explicit は キャストの際に明示的にする必要がある変換演算子
参考したURL