如何在C#中清空数组?

8
我正在使用函数Array.Clear()来清空一个数组,但是它会生成一个错误。这是我使用的代码:
private int[] activeFielderNumber = new int[10];
private string[] activeFielderAction = new string[10];  
....
...
....
Array.Clear(activeFielderNumber, 0, activeFielderNumber.Length);
Array.Clear(activeFielderAction, "", activeFielderAction.Length);

错误是:
error CS0103: The name `Array' does not exist in the current context

如何解决这个问题?

2
错误提示表明类“Array”不在范围内。您能否扩展您的示例代码,以显示至少方法声明和可能的使用情况? - vossad01
清空数组有多种方法。尽管Array.Clear()在代码方面最简单,但如果您感兴趣,这里还有其他方法 - Free Coder 24
8个回答

11

你有使用过吗?

using System;

还有一个需要更正的地方:

Array.Clear(activeFielderAction, "", activeFielderAction.Length);

应该是这样的

Array.Clear(activeFielderAction, 0, activeFielderAction.Length);

最后两个参数是要清除的索引范围。


7

试试这个

Array.Clear(yourArray, 0, yourArray.Length);

3
我正在使用Array.Clear()函数来清空数组,但它抛出了错误。
不是的,Clear函数没有抛出错误,编译器抛出了错误。
error CS0103:当前上下文中不存在“Array”名称。
当我们搜索CS0103时,Google会给出以下信息: MSDN上的C#编译器错误CS0103 在类、命名空间或作用域中使用了不存在的名称。请检查名称的拼写,并检查您的using语句和程序集引用,以确保您要使用的名称可用。一个常见的错误是在循环或try块内声明一个变量,然后尝试从其他代码块或包含代码块访问它,如以下示例所示。
翻译成:在当前上下文中找不到Array。你是否缺少“using”语句?

1
以下代码能够正常运行:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] activeFielderNumber = new int[10];
string[] activeFielderAction = new string[10];  

Array.Clear(activeFielderNumber, 0, activeFielderNumber.Length);
Array.Clear(activeFielderAction, 0, activeFielderAction.Length);
        }
    }
}

1

Array.Clear() 方法只会将数组重置为其默认状态。

根据该语句:

Array.Clear(activeFielderAction, "", activeFielderAction.Length); 我们可能会遇到错误。

实际语句应该是:

Array.Clear(activeFielderAction, 0, activeFielderAction.Length);

同时,请检查是否导入了 Using.System; 命名空间。

请尝试以下代码。

int[] activeFielderNumber = new int[10];
activeFielderNumber[1] = 10;
activeFielderNumber[2] = 20;

string[] activeFielderAction = new string[10];
Array.Clear(activeFielderNumber, 0, activeFielderNumber.Length);
Array.Clear(activeFielderAction, 0, activeFielderAction.Length);

1
很遗憾,我没有足够的积分发表评论,所以不得不在这里提供一个“答案”... 对于任何“速度狂”,有众多方法可以清除数组(而不仅仅是 Array.Clear),如此演示, 但通常 Array.Clear 是最简单和最快速的方法。
以下是已测试过用于清除数组(来源于该网站)的三种方式,其中“o1”是对象数组:
for (int x = 0; x < MAX; x++)
{
    o1[x] = null;
}

Array.Clear(o1, 0, o1.Length);

Parallel.For(0, MAX, x =>
{   //arrays are thread safe if only one thread is writing to an index
    o1[x] = null;
});

我觉得这篇阅读很有趣,因为我从未考虑过尝试其他方法(尤其是使用并行循环),而不是Array.Clear


0

你只需要将Array对象引用设置为null,例如:

String url = "http://localhost/RestWebService/employee?" name + "," + id; String[] arr = url.Split('?');

        arr = null;
        arr = url.Split('?');

就这些了


0

这行代码

Array.Clear(activeFielderAction, "", activeFielderAction.Length);

Array.Clear() 的使用无效 - 中间参数需要是一个整数,就像你在前一行所写的那样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接