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#?
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#?
很抱歉,但動態數組,如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
}
支持動態數組;他們被稱爲列表,他們可以像PHP數組一樣通過鍵來引用。 – CompanyDroneFromSector7G
可以使用的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
}
在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());
}
或使用詞典
這個答案看起來是最豐富的。但是由於PHP可能對數組的內容有不同的看法,Dictionary
在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]);
這是一個不好的問題 - 陣列是指每種語言不同的東西 - 從C#角度PHP關聯數組是一本字典 - 在C#中的數組沒有鑰匙,他們只能有一個順序索引 –
@web_bod donchano System.Collections.Generic命名空間中的Dictionary –
是的 - 但他說:「我有一個'數組',我想知道是否包含選定鍵上的值」 - '數組'沒有'鍵'donchno! –