2015-10-16 90 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是没有办法的。