.net - ウィンドウ - フレームワークに汎用スワップメソッドはありますか?



(2)

Interlocked.Exchangeがあります。 これはスレッドセーフなアトミック呼び出しで行われます。

コメント後に編集:

これがInterlocked.Exchangeを使用してどのように機能するかを明確にするために、次のようにします。

left = Interlocked.Exchange(ref right, left);

これは、(実際には)次のようになります。

Swap(ref left, ref right);

ただし、Interlocked.Exchangeはこれをアトミック操作として実行するため、スレッドセーフです。

このようなメソッドはフレームワークのどこかに存在しますか?

public static void Swap<T>(ref T left, ref T right) {
    T temp;
    temp = left;
    left = right;
    right = temp;
}

そうでない場合、何らかの理由


Answer #1

いいえ、フレームワークはそのようなメソッドを持っていません。 おそらくその理由は、それを組み込みにしてもそれほどメリットがないため、自分で追加することが非常に簡単にできることです。 これには、パラメータとしてrefを使用することも必要です。これにより、使用例が大幅に制限されます。 たとえば、これはできませんでした。

List<int> test; 
// ...
Swap(ref test[0], ref test[1]); // won't work, it's an indexer, not an array




.net