簡體   English   中英

C#中針對不同類型的通用Xor交換

[英]generic xor swap in c# for different types

我正在嘗試制作一個函數,該函數可以使用xor方法交換c#中的任何2個變量,無論它們是引用類型還是值類型。 為此可以正常工作嗎?

public static void QuickSwap<T>(ref T a, ref T b)
{
    if (ReferenceEquals(a, b) || (typeof(T).IsValueType && a == b))
        return;
    a ^= b;
    b ^= a;
    a ^= b;
}

否,因為C#中XOR運算符僅針對整數類型和bool定義。

(對於任意類型,沒有通用的XOR運算符,因為它將導致無效狀態,這與C#作為類型安全語言的設計目標相矛盾: myClass1 ^ myClass2將指向無效的內存位置,而myStruct1 ^ myStruct2的結果myStruct1 ^ myStruct2也很可能是垃圾。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM