由于清除不起作用,如何清除数组中的元素?

问题描述 投票:2回答:2

这是我的代码,但是clear方法不起作用,但是我找不到错误。这是第一次清除方法不起作用,有人可以帮助我吗?

using System; 
using System.Collections.Generic; 
public class test{ 
    public static void Main() 
    { 
        try {  
            int[] myArr = {-1, 4, 8, 6}; 
            PrintIndexAndValues(myArr); 
            Console.WriteLine(); 

            Console.WriteLine("Taking index out of bound:"); 
            Array.clear(myArr, 1, 2); 
            Console.WriteLine("Array After Operation:"); 
            PrintIndexAndValues(myArr); 
        } 

    } 
    public static void PrintIndexAndValues(int[] myArr) 
    { 
        for (int i = 0; i < myArr.Length; i++) { 
            Console.WriteLine("{0}", myArr[i]); 
        } 
    } 
} 
c#
2个回答
1
投票

来自Arrays (C# Programming Guide)

创建数组实例时将确定维数和每个维的长度。这些值在实例的生存期内无法更改。

如果您希望能够以您喜欢的方式使用Clear(),则应改用List:

List<int> myList = new List<int>{-1, 4, 8, 6};

// Do some stuff with your list

myList.Clear();

编辑:您的PrintIndexAndValues实际上仅打印值,这是您可以执行的操作:

public static void PrintIndexAndValues(List<int> myArr) 
    for (int i = 0; i < abc.Count; i++)
    {
        Console.WriteLine("{0}: {1}", i, abc[i]);
    } 

Edit2:刚刚意识到您可能想删除数组的第一个和最后一个元素,而不是清除整个数组?这应该可以解决问题:

myList.RemoveAt(0)
myList.RemoveAt(3)

0
投票

以下是您的更正代码

using System; 
using System.Collections.Generic; 

public class Test
{ 
    public static void Main() 
    { 
            int[] myArr = {-1, 4, 8, 6}; 

            PrintIndexAndValues(myArr); 
            Console.WriteLine(); 

            Console.WriteLine("Taking index out of bound:"); 
            Array.Clear(myArr, 0, myArr.Length);

            Console.WriteLine("Array After Operation:"); 
            PrintIndexAndValues(myArr); 
    } 

    public static void PrintIndexAndValues(int[] myArr) 
    { 
        for (int i = 0; i < myArr.Length; i++)  
            Console.WriteLine("{0}", myArr[i]); 
    } 
} 

这会将数组中的所有值设置为0。

© www.soinside.com 2019 - 2024. All rights reserved.