相关疑难解决方法(0)

比较.NET中的两个字节数组

我怎么能快速做到这一点?

当然,我可以这样做:

static bool ByteArrayCompare(byte[] a1, byte[] a2)
{
    if (a1.Length != a2.Length)
        return false;

    for (int i=0; i<a1.Length; i++)
        if (a1[i]!=a2[i])
            return false;

    return true;
}
Run Code Online (Sandbox Code Playgroud)

但我正在寻找BCL功能或一些经过高度优化的可靠方法来实现这一目标.

java.util.Arrays.equals((sbyte[])(Array)a1, (sbyte[])(Array)a2);
Run Code Online (Sandbox Code Playgroud)

很好地工作,但它看起来不适用于x64.

请注意我的超快速的答案在这里.

.net c# j# arrays performance

513
推荐指数
15
解决办法
29万
查看次数

IStructuralEquatable和IStructuralComparable解决了什么问题?

我注意到这两个接口,以及几个相关的类,已经在.NET 4中添加了.它们对我来说似乎有点多余; 我已经阅读了几个关于它们的博客,但我仍然无法弄清楚它们在.NET 4之前解决了哪些棘手问题.

什么是使用IStructuralEquatableIStructuralComparable

.net equality icomparable iequalitycomparer

55
推荐指数
4
解决办法
7842
查看次数

为什么IStructuralEquatable和IStructuralComparable不通用?

System.Collections.IStructuralEquatableSystem.Collections.IStructuralComparable在.NET 4中添加,但为什么它们不是通用的,比如IEquatable<T>IComparable<T>

.net generics equality .net-4.0

8
推荐指数
1
解决办法
1069
查看次数

没有绑定检查的C#byte []比较

我正在寻找性能有效的方法来比较两个字节[]的相等性.大小超过1 MB,因此应尽量减少每个数组元素的开销.

我的目标是通过避免两个数组的重复绑定检查来击败每个项目的速度SequenceEqual手动编码的for循环.以同样的方式导致快速,会导致什么?Array.Copymemcpymemcmp

c# arrays comparison performance byte

6
推荐指数
2
解决办法
2701
查看次数

C# - 字节数组 - byte [] - 有一个简单的比较器吗?

我是否忘记了显而易见的,或者是"手动"比较器最好的方法?

基本上,我只想比较类型(小)字节数组的内容.如果所有字节都匹配,则结果应为true,否则为false.

我期待找到那个Array.Equals或者Buffer.Equals会有所帮助.

示范代码:

  var a = new byte[]{1, 2, 3, 4, 5};
  var b = new byte[]{1, 2, 3, 4, 5};
  Console.WriteLine(string.Format("== : {0}", (a == b)));
  Console.WriteLine(string.Format("Equals : {0}", a.Equals(b)));
  Console.WriteLine(string.Format("Buffer.Equals : {0}", Buffer.Equals(a, b)));
  Console.WriteLine(string.Format("Array.Equals = {0}", Array.Equals(a, b)));
  Console.WriteLine(string.Format("Manual_ArrayComparer = {0}", ArrayContentsEquals(a, b)));
Run Code Online (Sandbox Code Playgroud)

手动功能:

/// <summary>Returns true if all elements of both byte-arrays are identical</summary>
public static bool ArrayContentsEquals(byte[] a, byte[] b, int length_to_compare = int.MaxValue)
{
  if (a == null || …
Run Code Online (Sandbox Code Playgroud)

c# arrays equality

2
推荐指数
1
解决办法
2092
查看次数

比较C#中的两个char []数组

我有以下C#代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            char[] st = "stackoverflow".ToCharArray();
            char[] ca = { 's', 't', 'a', 'c', 'k' };
            if (st.Take(5) == ca)
            {
                Console.WriteLine("Success");
            }
            else
            {
                Console.WriteLine("Failure");
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它旨在将"成功"写入控制台,但它始终打印"失败".任何帮助将非常感激.

c# arrays comparison char

0
推荐指数
1
解决办法
6793
查看次数