2012-05-19 156 views
6

C#是否有任何PHP的array_key_exists函數?是否有C#等價於PHP的array_key_exists?

例如,我有這樣的PHP代碼:

$array = array(); 
$array[5] = 4; 
$array[7] = 8; 
if (array_key_exists($array, 2)) 
    echo $array[2]; 

我將如何把它變成C#?

+0

這是一個不好的問題 - 陣列是指每種語言不同的東西 - 從C#角度PHP關聯數組是一本字典 - 在C#中的數組沒有鑰匙,他們只能有一個順序索引 –

+0

@web_bod donchano System.Collections.Generic命名空間中的Dictionary

+0

是的 - 但他說:「我有一個'數組',我想知道是否包含選定鍵上的值」 - '數組'沒有'鍵'donchno! –

回答

6

很抱歉,但動態數組,如PHP在C#中不支持。你可以做的是創造一個Dictionary<TKey, TValue>(int, int)並添加使用.Add(int, int)

using System.Collections.Generic; 
... 
Dictionary<int, int> dict = new Dictionary<int, int>(); 
dict.Add(5, 4); 
dict.Add(7, 8); 
if (dict.ContainsKey(5)) 
{ 
    // [5, int] exists 
    int outval = dict[5]; 
    // outval now contains 4 
} 
+0

支持動態數組;他們被稱爲列表,他們可以像PHP數組一樣通過鍵來引用。 – CompanyDroneFromSector7G

1

可以使用的containsKey

var dictionary = new Dictionary<string, int>() 
{ 
    {"mac", 1000}, 
    {"windows", 500} 
}; 

// Use ContainsKey method. 
if (dictionary.ContainsKey("mac") == true) 
{ 
    Console.WriteLine(dictionary["mac"]); // <-- Is executed 
} 

// Use ContainsKey method on another string. 
if (dictionary.ContainsKey("acorn")) 
{ 
    Console.WriteLine(false); // <-- Not hit 
} 
+0

+1,但我認爲重要的一點是他/她想要一個Dictionary而不是一個Array。 –

+0

是克里斯所以我 – Mennan

+0

,將無法與int [] –

4

在C#中的數組具有固定的大小,所以你將宣佈8個整數

int[] array = new int[8]; 

的數組,然後你只需要檢查的長度

if(array.Length > 2) 
{ 
    Debug.WriteLine(array[2]); 
} 

這對數值類型很好,但是如果您有一個引用類型數組,例如

Person[] array = new Person[8]; 

那麼你就需要檢查null作爲

if(array.Length > 2 && array[2] != null) 
{ 
    Debug.WriteLine(array[2].ToString()); 
} 
+3

或使用詞典

+0

這個答案看起來是最豐富的。但是由於PHP可能對數組的內容有不同的看法,Dictionary 是一種更好的方法。在數組中,只有索引,因此您將擁有與數組大小相同的「鍵」。在Dictionary中,您只能添加儘可能多的鍵值對。 –

5

在C#中,當你宣佈一個新的數組,你必須提供它的大小內存分配。如果你正在創建一個int的數組,那麼值在實例化時被預填充,所以這些鍵將始終存在。

int[] array = new int[10]; 
Console.WriteLine(array[0]); //outputs 0. 

如果你想有一個動態大小的數組,你可以使用一個List

List<int> array = new List<int> 
array.push(0); 

if (array.Length > 5) 
    Console.WriteLine(array[5]); 
相關問題