2012-09-12 44 views
5

我一直在學習C#2個月。之前,我學會了PHP和看到它有一個數組,其中的指數是一個字符串,像這樣:是否C#有索引數組是PHP的字符串?

$John["age"] = 21; 
$John["location"] = "Vietnam"; 

重要的是要記住,我們設置爲一個數組元素是非常有用的。我試圖找出C#是否支持該數組類型,但我還沒有看到任何答案。

C#是否有這樣的數組?如果有,我該如何創建它?

+4

僅供參考,這被稱爲關聯數組。 – nickb

+1

http://msdn.microsoft.com/en-us/library/xfhwa508.aspx –

回答

6

C#支持索引的任何類型的對象。實施的是System.Collections.Generic.Dictionary<T1,T2>。你可以申報這樣的一個:

Dictionary<string, string> myDictionary = new Dictionary<string, string>(); 
+7

您不必使用Add()來添加項目 - 在PHP示例中分配它們也會添加它們。 – Lucero

+0

謝謝,Lucero我會編輯這部分。 –

5

是的,這是一個關聯數組,用C#代表通用的Dictionary<TKey, TValue>類或非通用的Hashtable

您的代碼將只可能與Hashmap,因爲值不是全部相同的類型。不過,我強烈建議你重新考慮設計。

+1

+1 - 你打敗了我:-p – Lucero

+0

請問下降者請如此評價原因?否則,downvote是毫無意義的,因爲我無法改進答案。 –

+0

嘿Daniel,你也可以用'Dictionary '在技術上實現它。沒有什麼用處,但是你不需要爲此需求提供一個'Hashmap'。 –

4

使用System.Collections.Generic.Dictionary<T1,T2>作爲其他說。爲了完成你的知識,你應該知道你可以控制自己的行爲[]。例如:

public class MyClass 
{ 
    public string this[string someArg] 
    { 
     get { return "You called this with " + someArg; } 
    } 

} 

class Program 
{ 

    void Main() 
    { 
     MyClass x = new MyClass(); 
     Console.WriteLine(x["something"]); 
    } 
} 

會產生「你用這個東西叫這個」。

更多關於此的documentation

+0

所以正確的答案是:沒有C#沒有關聯數組! – JvdBerg

+2

@JvdBerg:胡說八道。 –

+0

不,它不是。字典是一個類,而不是一個被動數組! – JvdBerg

相關問題