Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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
如何在C#winform中以编程方式从数组复制到特定位置的数组_C#_Arrays_Winforms - Fatal编程技术网

如何在C#winform中以编程方式从数组复制到特定位置的数组

如何在C#winform中以编程方式从数组复制到特定位置的数组,c#,arrays,winforms,C#,Arrays,Winforms,我有两个数组具有这个值 我需要将数据从数组2复制到数组1的空位置,如果它们具有相同的ex编号 我的代码是这样的,但它只将一个ex复制到数组1中的所有null (数据作为数组1,x作为数组2) for(int q=0;q

我有两个数组具有这个值 我需要将数据从数组2复制到数组1的空位置,如果它们具有相同的ex编号

我的代码是这样的,但它只将一个ex复制到数组1中的所有null (数据作为数组1,x作为数组2)

for(int q=0;q
根据图像,输出数组似乎在其原始位置包含来自array1的每个项目,并且来自array2的项目被插入空点,但前提是这些项目没有出现在array1中。下面是一个示例算法:

public static String[] Merge(String[] arr1, String[] arr2) {
    Hashtable ht = new Hashtable(StringComparer.OrdinalIgnoreCase);
    int requiredLength = 0;
    foreach (String s in arr1) {
        if (s != null) {
            ht[s] = s;
            requiredLength++;
        }
    }
    foreach (String s in arr2) {
        if (s != null && !ht.ContainsKey(s))
            requiredLength++;
    }

    String[] arr3 = new String[requiredLength];
    int k = 0;
    for (int i = 0; i < arr3.Length; i++) {
        String s = (i < arr1.Length ? arr1[i] : null);
        if (s == null) {
            while (k < arr2.Length) {
                if (arr2[k] != null && !ht.ContainsKey(arr2[k])) {
                    arr3[i] = arr2[k++];
                    break;
                }
                k++;
            }
        }
        else
            arr3[i] = s;
    }
    return arr3;
}
公共静态字符串[]合并(字符串[]arr1,字符串[]arr2){
Hashtable ht=新的Hashtable(StringComparer.OrdinalIgnoreCase);
int requiredLength=0;
foreach(arr1中的字符串s){
如果(s!=null){
ht[s]=s;
所需长度++;
}
}
foreach(arr2中的字符串s){
如果(s!=null&!ht.ContainsKey)
所需长度++;
}
字符串[]arr3=新字符串[requiredLength];
int k=0;
for(int i=0;i
对于图片中显示的两个阵列,预期输出是什么?此外,您是否考虑过使用
列表
而不是数组?这可能会简化事情。我将数组2修改为列表,因为我不知道其中有多少项和输出应该是这样的--->ex1,绿色,结束,17,最后一个未完成,计数器打开,ex7(抱歉它不是ex7,ex1),红色,绿色,结束,11,最后一个完成,计数器打开,你应该回答你的问题以显示预期的输出应该是什么。不要在评论中添加它。此外,您应该将数组值作为“文本”而不是图片发布。如果必须输入数据,没有人会提供帮助。乍一看,似乎代码行…
if(data[q+fin]=“END”)
永远不会为真。字符串区分大小写“END”!=“结束”。我建议您仔细阅读SO部分,因为它显示了SO是如何工作的。该部分可能会有所帮助。此外,你可能会发现SO部分很有用。我更新了图片请查看,很抱歉我是stack over Flow的新手。真的谢谢你的回答对我很有帮助
public static String[] Merge(String[] arr1, String[] arr2) {
    Hashtable ht = new Hashtable(StringComparer.OrdinalIgnoreCase);
    int requiredLength = 0;
    foreach (String s in arr1) {
        if (s != null) {
            ht[s] = s;
            requiredLength++;
        }
    }
    foreach (String s in arr2) {
        if (s != null && !ht.ContainsKey(s))
            requiredLength++;
    }

    String[] arr3 = new String[requiredLength];
    int k = 0;
    for (int i = 0; i < arr3.Length; i++) {
        String s = (i < arr1.Length ? arr1[i] : null);
        if (s == null) {
            while (k < arr2.Length) {
                if (arr2[k] != null && !ht.ContainsKey(arr2[k])) {
                    arr3[i] = arr2[k++];
                    break;
                }
                k++;
            }
        }
        else
            arr3[i] = s;
    }
    return arr3;
}