こんにちわ、Unityエンジニアのオオバです。

C#にはimplicit変換演算子というものがあります。

これを使用すると型をキャストすることなく変換できます。

テストコードはコチラ

キャストすることなく変換しています。

Convert.cs · GitHub

以下の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);  
}
この記事の内容

まとめ

変換演算子を使用することで、コード量をかなり減らすことができそうです。

しかし、コードの読みやすさの見地から考えると、後から読んだ人にとっては混乱の種になりそうな気がするため、この文法を採用するかどうかは微妙なところです。

知っていて全く損はないという所でしょうか。
良い使い所を教えてください。

参考

最後に

明けましておめでとうございます。今年も粛々更新していこうと思います。

期間限定 最大95%オフセール
効率UPメガバンドル開催中!最大95%オフ!!!
期間 : 11月1日午後15時59分まで
オススメ記事
検証環境