2013-04-22 1 views
2

C#의 사전에서 int 값을 대체 할 수있는 방법이 궁금합니다. 값은 다음과 같습니다. 사전에 int 값을 대체하는 방법 C#

  • 34,12
  • 24,35

  • 12,34 25,12
    • 은 내가 하나 개의 라인을 대체 할 수 있는지 궁금했다. 예를 들어 첫 번째 행을 12,12의 새 값으로 바꾸려면 사전에있는 다른 '12'값을 대체하지 않습니다.

  • +0

    코드를 표시하십시오. 코드 없이는 작동하지 않는 것을 추측 할 수 없습니다. –

    +0

    이것은 실제로 이해가되지 않습니다. 대체해서 대체 무슨 뜻이야? 무슨 사전 얘기하고있어? 그것은'Dictionary '입니까? 이 경우 : 키당 하나의 항목 만 가질 수 있습니다. –

    +0

    키마다 하나의 개체를 사용하기를 바랍니다. 값 객체는 목록 또는 배열이 될 수 있기 때문입니다. (까다 롭지 않아 ^^) –

    답변

    1

    첫 번째 줄을 12, 12으로 바꿀 수 없습니다. 다른 키 값 쌍이 12이므로 키를 키로 사용할 수 없습니다. 그리고 당신은 사전에 중복 키를 가질 수 없습니다.

    어쨌든 당신은 다음과 같은 일을 할 수

    Dictionary<int, int> myDictionary = new Dictionary<int, int>(); 
    myDictionary.Add(25, 12); 
    myDictionary.Add(24, 35); 
    
    //remove the old item 
    myDictionary.Remove(25); 
    
    //add the new item 
    myDictionary.Add(12, 12); 
    

    는 편집 : 당신이 어떤 X를 저장하려는 경우는, y 위치는 당신이 포인트라는 클래스를 생성 제안하고 List<Point>을 사용합니다. 그런 다음

    class Point 
    { 
        public double X {get; set;} 
        public double Y {get; set;} 
    
        public Point(double x, double y) 
        { 
         this.X = x; 
         this.Y = y; 
        } 
    } 
    

    :

    List<Point> myList =new List<Point>(); 
    myList.Add(new Point(25, 13)); 
    
    +0

    사전을 사용하지 않고 다른 방법이 있습니까? – user2306087

    +1

    @ user2306087 무엇을 찾으 시나요? –

    +0

    내가 원하는 것은 x와 y 위치를 사용하고, 같은 X 또는 Y를 가지고 있다면 잘못된 값을 대체하기를 원하지 않습니다. – user2306087

    3

    Dictionary<TInt, TValue>가 인덱서로 알려져 있습니다 무엇을 사용합니다 여기에 코드입니다. 이 경우 사전에있는 요소를 키별로 액세스하는 데 사용됩니다.

    dict[25]12을 반환합니다.

    이제 원하는 것은 키가 12이고 값이 12 인 것입니다. 불행하게도, 당신은 키에 의해 사전에 항목을 대체 할 수 없다, 그래서 당신이해야 할 것은 :

    if(dict.ContainsKey(25)) 
    { 
        dict.Remove(25); 
    } 
    if(!dict.ContainsKey(12)) 
    { 
        dict.Add(12, 12); 
    } 
    

    참고 : 사용자가 제공 한 값에서은, 이미 키와 12와 키 - 값 쌍있다, 따라서 if(!dict.ContainsKey(12))은 false를 반환하므로 12,12을 사전에 추가 할 수 없습니다.

    +0

    사전을 사용하지 않는 다른 방법이 있습니까? 왜냐하면 내가해야 할 일은 x와 y 위치를 사용하고 동일한 X 또는 Y를 사용하기 때문입니다. Y 틀린 값을 바꾸지 않기를 원합니다. – user2306087

    +0

    'List >''System.Drawing'을 사용하는 경우'List '. – Corak

    +0

    "사전으로 입력 한 내용을 키로 대체 할 수 없습니다"- 물론 ContainsKey /! ContainsKey 댄스를 통과 할 필요는 없습니다. 물론 12,12,12,34 둘 다 가질 수는 없습니다 – shambulator

    0

    사전에는 키가 고유해야합니다.

    키가 고유하지 않아도되는 경우에는 List<Tuple<int, int>> 또는 List<CustomClass>CustomClass에 두 개의 정수 필드가 포함될 수 있습니다. 그런 다음 원하는 방식으로 추가하거나 바꿀 수 있습니다.

    관련 문제