Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET是否等效于内部类型数组的java.util.Arrays.hashCode()函数?_Java_.net_Arrays_Hashcode_Gethashcode - Fatal编程技术网

.NET是否等效于内部类型数组的java.util.Arrays.hashCode()函数?

.NET是否等效于内部类型数组的java.util.Arrays.hashCode()函数?,java,.net,arrays,hashcode,gethashcode,Java,.net,Arrays,Hashcode,Gethashcode,对于内部类型(如int[]、short[]、float[]等)的数组,是否有与等效的.NET实用程序类 显然,我可以编写自己的实用程序类,但我正在尝试在.NET framework中找到一个可用的实用程序类。我非常确定框架本身中没有任何东西可以做到这一点。可能会有一些第三方实现,但没有内置(和公共)的实现。我很确定框架本身没有实现这一点的东西。可能会有一些第三方实现,但没有内置的(和公共的)。我不知道在3.5版之前.Net中会内置这样的东西,尽管.Net 4很可能通过Array将实现的接口在本机

对于内部类型(如int[]、short[]、float[]等)的数组,是否有与等效的.NET实用程序类


显然,我可以编写自己的实用程序类,但我正在尝试在.NET framework中找到一个可用的实用程序类。

我非常确定框架本身中没有任何东西可以做到这一点。可能会有一些第三方实现,但没有内置(和公共)的实现。

我很确定框架本身没有实现这一点的东西。可能会有一些第三方实现,但没有内置的(和公共的)。

我不知道在3.5版之前.Net中会内置这样的东西,尽管.Net 4很可能通过
Array
将实现的接口在本机上支持它(感谢Greg Beech指出这一点)

下面是一个使用IEnumerable上的扩展方法的简单实现

int HashContents<T>(this IEnumerable<T> enumerable)
{
    int hash = 0x218A9B2C;
    foreach (var item in enumerable)
    {
        int thisHash = item.GetHashCode();
        //mix up the bits.
        hash = thisHash ^ ((hash << 5) + hash);
    }
    return hash;
}
int HashContents(此IEnumerable可枚举)
{
int hash=0x218A9B2C;
foreach(可枚举中的变量项)
{
int thishhash=item.GetHashCode();
//把零碎的东西混在一起。

hash=thishhash^((hash我不知道在3.5版之前.Net中内置了这样的东西,尽管.Net 4很可能通过
Array
将实现的接口本地支持它(感谢Greg Beech指出这一点)

下面是一个使用IEnumerable上的扩展方法的简单实现

int HashContents<T>(this IEnumerable<T> enumerable)
{
    int hash = 0x218A9B2C;
    foreach (var item in enumerable)
    {
        int thisHash = item.GetHashCode();
        //mix up the bits.
        hash = thisHash ^ ((hash << 5) + hash);
    }
    return hash;
}
int HashContents(此IEnumerable可枚举)
{
int hash=0x218A9B2C;
foreach(可枚举中的变量项)
{
int thishhash=item.GetHashCode();
//把零碎的东西混在一起。

hash=thishhash^(.NET 4.0数组中的hash将通过接口支持此操作,但在此之前,恐怕您必须自己完成。

在.NET 4.0数组中,将通过接口支持此操作,但在此之前,恐怕您必须自己完成。

两个快速问题:1)移位和加法真的比乘法快吗?2)据我所知,如果这个哈希值总是零,那么不管有多少项,最终的哈希值都是零。这似乎与你的上一句话相矛盾。1)在版本模式VS2008中,我的微基准测试表明移位和加法版本比等效乘法快8%左右。2)谢谢,代码已经修复。两个简单的问题:1)移位和加法真的比乘法快吗?2)据我所知,如果这个哈希值始终为零,那么最终的哈希值将为零,不管有多少项。这似乎与你的最后一句话相矛盾。1)在发布模式下,VS2008,我的微基准指示吃了移位和加法比等价乘法快8%。2)谢谢,代码已经修复。