2012-09-12 5 views
5

나는 2 개월 동안 C#을 배우고있다. 전에, 내가 PHP를 알게하고이 같은 인덱스가 문자열 배열 것을 볼 :C#은 index와 배열이 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

downvoter 제발 이유에 대해 언급 친절한가? 그렇지 않으면 응답을 향상시킬 수 없으므로 downvote는 무의미합니다. –

+0

대니얼, 기술적으로 '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

관련 문제