自分で定義をして、比較したり簡単に使うには?(ユーザー定義型) - TejimaTuyoshi/returnread GitHub Wiki

C#以外の物全部。

コライダーとかがそう。

インベントリを作る際に有用。

ソートをする際は、計算で十分。

うん。なにこの話関係ないわ。

ちなみに、ソートの内容を決める方法として、「CompareTo」がある。

IComparable インターフェイスを継承して CompareTo メソッドを実装することにより、そのクラスのインスタンスはソート可能になる。

CompareTo メソッドは object 型を引数にとり、int 型の値を返す。

これは、int同士を比較して、大小を決めるものになる。

(自分が小さい場合は-1,同じ場合は0,大きい場合は1追加されるようにした方が分かりやすい。)

これがないと[順番がわからない]として{コンパイルエラー}になる。

尺やねぇ。

まぁ、仕方ないねPCだもの。「てじお」

・・・塩ではない(ダメ押し)

ちなみに、これは「自分が作った場合」なら簡単にできるが、

他の人が作った場合は、そればかりではない。

その場合は、Linqを使用する。

入れ替え型がはっきりしている物は、sortで良いが、

Vectorや自分が作ったクラスは「自分で定義」すると良い。

逆に、intなどは「定義する」やり方は{悪}である。(手間)

ちなみに、IConparableは「自分で定義する」やり方だが、{自分たちで書く}ことはあまりないと思うので、

読めるようにしておこう。

つぎの定義方法として「ToString() のオーバーライド」がある。

元々の話として、Vectorの座標をログに表示する際、「Update」内でやろうとすると、{当たり前ではない方法}で出る。

これを自分が作ったクラスでやると、「クラス名」が出てきてしまう。

これは、「Tostring」が作用しており、vectorは気を利かせて出してくれるものの、

自分で作るとその[気]がなくなって、文字列を出していた。

これの対策として、オーバーライドすることで行うことが可能になる。

$"[{},{}]";

と、オーバーライドの中に入れておけば大丈夫。

気を利かせているのと内容が一緒。

最後の方法(※使うことはない)は演算子のオーバーロード

演算オペランドとも言う。

これは、Stringをintのように計算できるようにするもの。

定義方法は、「合成した」ことにすることを前提にする。

簡単に言うと、[operator]によってクラス内(ネーム)で定義する。

でもこんな方法使わないらしい。

Fusion(クラスネーム ネーム)

選んだアイテムたちを減らす

IDをランダムに抽出してそのアイテムにする。

ちなみに別の方法では、vectorも定義できる。

vectorの変数同士で計算可能。

ちなみにこの時の計算方法は「外積」の方法。

うん。どっかで聞いた気がする...