演算子のオーバーロードとは
自分で定義した型に対して演算を定義することができます。例えば数値(int型など)であれば+演算子を使うことで数値を足し合わせることができますが、数値以外のものに対しても独自の+演算子の処理を定義することができます。
書き方
例えば+を定義する場合は下のような感じで書きます。
public static クラス名 operator +(クラス名 arg1,クラス名 arg2) { // +として定義したい処理を記述 return クラス名のインスタンス }
サンプル
public class MyTest : MonoBehaviour { // Start is called before the first frame update void Start() { var md1 = new MyData(); var md2 = new MyData(); md1++; md1.Log(); // "a i u e o a" var md = md1 + md2; md.Log(); // "a i u e o a a i u e o" } class MyData { List<string> list = new List<string>(){"a", "i", "u", "e", "o"}; // MyData型の++とは、MyDataのlistに"a"を追加する処理として定義 public static MyData operator ++ (MyData data) { data.list.Add("a"); return data; } // MyData型の+とは、足されるものの方のlistに足すもののlistの要素を連結させるものとして定義 public static MyData operator + (MyData data1, MyData data2) { data1.list.AddRange(data2.list); return data1; } public void Log() { string log = string.Empty; foreach(var value in list){ log += value + " "; } Debug.Log(log); } } }