2012-05-19 45 views
6

C# có tương đương với chức năng array_key_exists của PHP không?Có tương đương C# với mảng array_key_exists của PHP không?

Ví dụ, tôi có mã PHP này:

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

Làm thế nào tôi tắt chức năng này vào C#?

+0

Đây là một câu hỏi xấu - mảng ý nghĩa khác nhau trong mỗi ngôn ngữ - từ aC# quan điểm của một mảng kết hợp php là một cuốn từ điển - trong C# mảng không có phím họ chỉ có một tuần tự chỉ số –

+0

@web_bod donchano của Từ điển trong không gian tên System.Collections.Generic ?? –

+0

có - nhưng anh ấy nói "Tôi có một' mảng' và tôi muốn biết nếu chứa giá trị trên khóa đã chọn "-' mảng' không có 'khóa' donchno! –

Trả lời

6

Xin lỗi, nhưng mảng động như PHP không được hỗ trợ trong C#. Những gì bạn có thể làm điều đó tạo ra một Dictionary<TKey, TValue>(int, int) và thêm bằng .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

Mảng động được hỗ trợ; chúng được gọi là Danh sách và chúng có thể được tham chiếu bằng khóa giống như các mảng PHP. – CompanyDroneFromSector7G

1

Bạn có thể sử dụng 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, mặc dù tôi nghĩ điểm quan trọng là anh/cô ấy muốn một từ điển chứ không phải là một mảng. –

+0

vâng Chris do đó tôi – Mennan

+0

sẽ không hoạt động với int [] –

4

Một mảng trong C# có một kích thước cố định, do đó bạn sẽ khai báo một mảng của 8 số nguyên

int[] array = new int[8]; 

Sau đó bạn chỉ cần phải kiểm tra độ dài

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

Tốt cho các loại giá trị, nhưng nếu bạn có một loạt loại tham chiếu, ví dụ:

Person[] array = new Person[8]; 

sau đó bạn sẽ cần phải kiểm tra cho null như trong

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

hoặc sử dụng Từ điển

+0

Câu trả lời này có vẻ thông tin nhất. Nhưng vì PHP có lẽ có một ý tưởng khác về mảng là gì, từ điển là một cách tiếp cận tốt hơn. Trong mảng bạn chỉ có các chỉ mục, do đó bạn sẽ có nhiều "khóa" như kích thước của mảng. Trong Từ điển, bạn chỉ có nhiều cặp khóa-giá trị khi bạn thêm vào đó. –

5

Trong C# khi bạn khai báo một mảng mới, bạn phải cung cấp cho nó một kích thước cho phân bổ bộ nhớ. Nếu bạn đang tạo một mảng gồm int, các giá trị được điền trước khi khởi tạo, vì vậy các khóa sẽ luôn tồn tại.

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

Nếu bạn muốn mảng động có kích thước, bạn có thể sử dụng List.

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

if (array.Length > 5) 
    Console.WriteLine(array[5]); 
Các vấn đề liên quan