2016-04-03 102 views
0
ArrayList list = new ArrayList(); 
for (int i = 0; i < list.Count; i++) 
{ 
    //If list[i] is empty? 
} 

是否可以檢查位置[i]上的值是否爲空?如果是這樣,這怎麼解決?如何檢查C#中的ArrayList中的元素是否爲空?

+1

只是做清單[i] == null – Dyrborg

+2

這取決於你的意思是「空」。 –

+0

ArrayList中的數據類型是什麼?我更喜歡使用列表對象,如列表或列表而不是ArrayList。一些列表集合可以包含null,其他的則不包含。 – jdweng

回答

1

列表中沒有「空白」的概念。如果您可以迭代到列表中的某個元素,則該元素確實存在,並且存在一些值。現在,這個值可以採取不同的形式,在語義上意味着它是「空的」,但是這實際上取決於你對「空白」的定義,以及你之前賦予它什麼值以使它爲空 - 因爲只有當你指定一個值時才存在一個列表元素到它。

一個可以被解釋爲空的常見值是null,這是一個無關的參考。這是所有引用類型的默認值,因此將它用作「空」會有意義。但其他值也可以在這裏同樣使用。

通常,您應該考慮只是刪除這些元素,而不是將空值的孔放入列表中。這樣,當遍歷你的列表時,你只有非空元素,並且你不需要在任何地方添加一些檢查來處理你特殊的空值。

0

這取決於你的ArrayList包含的內容。而你的意思是「空虛」。但是它不應該太難實施。 這裏有一些建議:

for(int i = 0; i<list.Count; i++){ 
    if(list[i] == null){   //for objects 
     //do something 
    } 
    if(list[i].equals("")){  //for empty string 
     //do something 
    } 
    if(list[i].exists){   //for objects you created yourselfs whit a boolean exists-function 
     //do something 
    } 
} 

可能是一些語法錯誤,但你明白了! :)

+0

如果您的數組列表包含int,則它可以測試-1或0,具體取決於您的設置。 –

1
for (int i = 0; i < list.Count; i++) 
{ 
    //If list[i] is empty? 
} 

只會循環數組中的元素。您必須通過list.Add(somevalue)或list [i] == somevalue將值分配給列表。

如果未分配,則根本不存在。所以一個列表不能有一個「空」的元素,因爲如果它沒有被設置,那麼沒有元素的鍵或值。像其他人一樣,儘管它可以是空的。但是null是一個值。

通過我寧願循環列表用foreach這樣

foreach(var item in list) { 
    // do something here. 
} 

這樣,你不需要做

var item = list[i]; 

來獲取值到一個變量的方式。因爲它已經由循環設置

相關問題