2012-12-07 191 views
7

我正在使用函數Array.Clear()來清空數組,但它會生成一個錯誤。 這是我使用的代碼:如何在C#中清空數組?

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

+0

有多種方法可以清除數組。即使Array.Clear()是代碼中最簡單的,如果你感興趣的話(這裏有其他方法)(http://blogs.davelozinski.com/curiousconsultant/csharp-net-fastest-way-to-clear -collections) –

回答

2

下面的代碼工作:

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); 
     } 
    } 
} 
9

你用

using System; 

和一個多點糾正:

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

應該

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

最後兩個參數是要清除的索引範圍。

5

我使用Array.Clear()函數來清空數組。但它是投擲錯誤

不,我不是。編譯器是清除函數沒有引發錯誤。

錯誤CS0103:

Compiler Error CS0103 (C#) at MSDN

嘗試:名稱'陣」不會在目前情況下

谷歌說,當我們尋找CS0103以下存在被用來使用名稱空間中不存在的名稱, 名稱空間或作用域。檢查名稱的拼寫,並使用語句和程序集引用來檢查您的 ,以確保您正在嘗試使用的名稱 可用。一個常見的錯誤是在循環或try塊中聲明 變量,然後嘗試從封閉代碼塊或其他代碼塊訪問它 ,如以下示例中的 所示。

翻譯成:在上下文中找不到數組。你是否錯過了「使用」聲明?

0

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

不是Array.Clear()有效使用 - 中間參數需要是int,就像你對前行。

1

Array.Clear()方法只會將陣列重置爲其默認狀態。基於聲明

Array.Clear(activeFielderAction, "", activeFielderAction.Length);我們可能會得到一個錯誤

實際的說法應該是

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

還要檢查你是否importing 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.Clearas demonstrated here,但通常是Array.Clear是最簡單和最快的。

下面是測試,以清除陣列(direct from the site),其中「01」是對象數組3種方式:

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之外的方法(特別是使用並行循環)。

4

試試這個

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