2015-10-16 87 views
0

我找論文兩個功能:結構比較器

bool CompareEquality<T>(ref T struct1, ref T struct2); // where T: struct 
int Compare<T>(ref T struct1, ref T struct2); // -1,0,1 for sorting 

第二個函數將結構類似的數字。例如。一個10字節的結構只是比較一個10字節的數字。

有沒有辦法?
它應該是有效的,不涉及任何複製的結構,創建新的緩衝區或數組。

+0

https://msdn.microsoft.com/en-us/library/vstudio/2zhzfk83(v=vs.100).aspx –

+0

至少對於相等比較器來說,你有它內置的 - 參見http:/ /referencesource.microsoft.com/#mscorlib/system/valuetype.cs,43以及使用的兩種方法的相應實現 - https://github.com/dotnet/coreclr/blob/bc146608854d1db9cdbcc0b08029a87754e12b49/src/vm/comutilnative.cpp #L2583。雖然它確實涉及拳擊。 – cynic

+0

你說:_很遺憾,你不能在c#中使用結構類型的指針._你是什麼意思?如果你有一個具體的結構類型,比如'System.TimeSpan',你可以**取一個指向它的指針,如果它不包含任何引用類型的實例字段。如果你有一個通用方法的類型參數'T',當然你不能把一個指針指向'T'類型的變量。即使'T'具有值類型約束,'where T:struct'。你是這個意思嗎? –

回答

0

更新:

至於C#6.0是沒有辦法的。