请问一下,有没有像C++运行库里一样memcmp的内存比较函数啊?谢谢了
解决方案 »
- C# 读取Excel中的combox和checkbox的数据
- 高手,大哥请帮忙:c#中想利用Form1调用一个新窗体frm,但想在frm中写代码,怎么实现呀,谢谢!
- 请问怎么改变程序的外框?
- 求助 如何实现对话框加载提示
- 窗体相互调用的问题? 解决立刻给分,急!!!
- 引用app.config配置文件出錯
- C#利用模板把页面内容生成新word~求教
- 请推荐简洁美观datagrid列表的样式
- 关于new Icon.....
- c#中如何将"65"这个字符串转换成整数65,或者是将整数65转换成字符串"65"
- 如何重排datagrid綁定datatable序號列
- DataTable中“指定的转换无效”?
完全不同,比如C++的内存比较,delphi 的内存比较,都是用汇编写的运行库,要快得多,MS做,也就可能在内部这样做,当然,如果他没这样做,那是一样的,自己写这样一个是简单,但效率不如C++运行库的快。比较的很大时,就会发现
{
public static int Compare(T obj1, T obj2)
{
int size=Marshal.SizeOf(obj1);
long l1,l2;
for (int i = 0; i < size/8; i++)
{
l1 = Marshal.ReadInt64(obj1, i * 8);
l2 = Marshal.ReadInt64(obj2, i * 8);
if (l1 < l2)
return -1;
if (l1 > l2)
return 1;
}
for (int i = size - size % 8; i < size; i++)
{
l1 = Marshal.ReadByte(obj1, i * 8);
l2 = Marshal.ReadByte(obj2, i * 8);
if (l1 < l2)
return -1;
if (l1 > l2)
return 1;
}
return 0;
}
}比较值类型
unsafe代码需要编译器开/unsafe,没有普适性通常设计中需要比较大小,则应该实现IComparable或者IComparable<>接口