日期:2014-05-18  浏览次数:20860 次

在C#中比较两个数组
比如说是char [] ch1= {'1','2','3','4','5','6','A','E'};这个数组.
和char [] ch2={'2','G','T','E','3'};比较.
我想循环取出ch2里的每个元素与ch1里面的每个元素依次进行比较,
如果ch2里面取出来的一个字符有在ch1里面出现的话就提示,然后再将ch2里面的
下一个字符取出来重新再与ch1的每一个字符进行比较.
如果ch2里面取出来的一个字符没有在ch1里面出现的话,就直接跳出循环,直接提示.
不知道有没有什么好的方法?
是用C#.net的代码哦,还望大侠能写点注释.
非常感谢!!!


------解决方案--------------------
public static void Main(string[] args)
{
Dictionary<char, int> map = new Dictionary<char, int>();
char [] ch1= {'1','2','3','4','5','6','A','E'};
for (int i = 0; i < ch1.Length; ++i)
map.Add(ch1[i], 0);
char[] ch2 = { '2', 'G', 'T', 'E', '3' };
for (int i = 0; i < ch2.Length; ++i)
{
if (!map.ContainsKey(ch2[i]))
{
Console.WriteLine("不在ch1中:{0}", ch2[i]);
break;
}
}
}
------解决方案--------------------
这样?
C# code

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            char[] ch1 = { '1', '2', '3', '4', '5', '6', 'A', 'E' };
            char[] ch2 ={ '1','2', 'G', 'T', 'E', '3' };
            foreach (char c in ch2)
            {
                if (System.Array.BinarySearch(ch1, c) >= 0)
                {
                    Console.WriteLine("{0}在ch1的索引是{1}", c, System.Array.BinarySearch(ch1, c));
                }
                else
                {
                    Console.WriteLine("{0}没有在ch1中出现", c);
                }
            }
        }
    }
}