Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > map в С#


Автор: Artiom 8.9.2005, 16:42
Есть ли в С# что-то вроде стандартного контейнера map? Или что можно использовать вместо него?

Автор: Дрон 8.9.2005, 16:44
System.Collections.Hashtable

PS: Этот вопрос лучше было отправлять в раздел Библиотека .NET

Автор: Artiom 8.9.2005, 17:09
Цитата
PS: Этот вопрос лучше было отправлять в раздел Библиотека .NET

Учту.

Цитата
System.Collections.Hashtable

Что-то слишком сложно. Мне всего-то надо сформировать несколько пар key-value, читать в строки keys, анализировать, присваивать values значения в зависимости от результатов анализа.
Как вообще осуществяется доступ к значению по известному ключу (чтобы изменить значание)?

Автор: Дрон 8.9.2005, 17:21
Цитата(Artiom @ 8.9.2005, 18:09)
Что-то слишком сложно. Мне всего-то надо сформировать несколько пар key-value, читать в строки keys, анализировать, присваивать values значения в зависимости от результатов анализа.
Как вообще осуществяется доступ к значению по известному ключу (чтобы изменить значание)?

Есть ещё
System.Collections.Specialized.NameValueCollection -- но это тот же Hashtable, только для string-ов.

Ничего в нём сложного нет smile

Автор: arilou 8.9.2005, 17:21
Цитата(Artiom @ 8.9.2005, 17:09)
Что-то слишком сложно.

Что сложно?

Код

using System.Collections;

...................

Hashtable hash = new Hashtable();
hash.Add("key1", "value1");
hash.Add("key2", "value2");

hash["key1"] = "newvalue1";
hash["key2"] = "newvalue2";

// перебор элементов.
IEnumerator hashEnumer = (IEnumerator)hash.GetEnumerator();

while(hashEnumer.MoveNext())
{
  DictionaryEntry de = (DictionaryEntry)hashEnumer.Current;
  
  Console.WriteLine(de.Key);
  Console.WriteLine((string)de.Value); // конечно, если value.GetType() == typeof(string)
}



Учите матчасть. smile В MSDN'е это все доступно описано.

Автор: mr.DUDA 9.9.2005, 09:32
Ещё проще:
Код

            Hashtable map = new Hashtable();

            // так можно добавлять, изменять 
            // и получать значения по ключу:
            map["key1"] = "value1";
            map["key2"] = "value2";
            map["key1"] = "changed_value1";
            string value1 = (string)map["key1"];
            
            // так можно получить все ключи (keys)
            // в виде массива строк:
            string[] keys = new string[map.Count];
            map.Keys.CopyTo(keys, 0);

            // так можно определить, если ли ключ в мапе:
            if(map.ContainsKey("key1"))
            {
                // ...
            }

            // так можно удалить элемент:
            map.Remove("key2");


Автор: Artiom 9.9.2005, 11:10
arilou
спасибо, мысль понял.

mr.DUDA, спасибо
это
Код

  // так можно получить все ключи (keys)    
            // в виде массива строк:    
            string[] keys = new string[map.Count];    
            map.Keys.CopyTo(keys, 0);


Как раз то мне надо! Так и думал что есть простой способ.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)