7

C#にはPHPのarray_key_exists関数に相当するものがありますか?

たとえば、私はこのPHPコードを持っています:

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

これをC#にするにはどうすればよいですか?

4

4 に答える 4

7

申し訳ありませんが、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
}
于 2012-05-19T19:30:26.717 に答える
5

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() );
}
于 2012-05-19T19:29:31.660 に答える
4

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]);
于 2012-05-19T19:30:58.560 に答える
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
}
于 2012-05-19T19:27:03.237 に答える