こんにちは、Unityエンジニアのオオバです。
C#にはimplicit
変換演算子というものがあります。
これを使用すると型をキャストすることなく変換できます。
テストコードはコチラ
Hoge型
がint型
へint型
からHoge型
へ
キャストすることなく変換しています。
以下のimplicit operator
を記述することでHogeをint型に変換出来るようになります。
// Hoge -> int
public static implicit operator int (Hoge value)
{
return value.m_num;
}
また以下のように記述することでint型からHogeを生成することが出来ます。
// int -> Hoge
public static implicit operator Hoge (int value)
{
return new Hoge (value);
}
ちなみにUnityのソースではRenderTargetIdentifier型
で使われています。
public static implicit operator RenderTargetIdentifier (RenderBuffer buf) {
return new RenderTargetIdentifier (buf, 0, CubemapFace.Unknown, 0);
}
public static implicit operator RenderTargetIdentifier (Texture tex) {
return new RenderTargetIdentifier (tex);
}
public static implicit operator RenderTargetIdentifier (int nameID) {
return new RenderTargetIdentifier (nameID);
}
public static implicit operator RenderTargetIdentifier (string name) {
return new RenderTargetIdentifier (name);
}
public static implicit operator RenderTargetIdentifier (BuiltinRenderTextureType type) {
return new RenderTargetIdentifier (type);
}
👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!
まとめ
変換演算子を使用することで、コード量をかなり減らすことができそうです。
しかし、コードの読みやすさの見地から考えると、後から読んだ人にとっては混乱の種になりそうな気がするため、この文法を採用するかどうかは微妙なところです。
知っていて全く損はないという所でしょうか。
良い使い所を教えてください。
参考
最後に
明けましておめでとうございます。今年も粛々更新していこうと思います。
この記事が気に入ったらフォローしよう
オススメ記事
検証環境
- Unity2017.3.0f3