Эквивалент Java Map в C #

Это работает для меня сегодня с FF 57:

function () {
    // JQuery, today, doesn't play well with adding SVG elements - tricks required
    $(selector_to_node_in_svg_doc).parent().prepend($(this).clone().text("Your"));
    $(selector_to_node_in_svg_doc).text("New").attr("x", "340").text("New")
        .attr('stroke', 'blue').attr("style", "text-decoration: line-through");
}

Делает:

146
задан zmbq 8 January 2013 в 06:33
поделиться

3 ответа

Можно индексировать Словарь, Вы не должны были 'добираться'.

Dictionary<string,string> example = new Dictionary<string,string>();
...
example.Add("hello","world");
...
Console.Writeline(example["hello"]);

Эффективный способ тестировать/получать значения TryGetValue (спасибо к Earwicker):

if (otherExample.TryGetValue("key", out value))
{
    otherExample["key"] = value + 1;
}

С этим методом Вы можете быстрый, и не допускающий исключений получают значения (если есть).

Ресурсы:

Ключи словаря

Попытка получает значение

177
ответ дан 23 November 2019 в 22:44
поделиться

Словарь <> эквивалент. В то время как это не имеет Получения (...) метода, это действительно имеет индексируемое свойство под названием Объект, к которому можно получить доступ в C# непосредственно с помощью индексной нотации:

class Test {
  Dictionary<int,String> entities;

  public String getEntity(int code) {
    return this.entities[code];
  }
}

Если Вы хотите использовать пользовательский ключевой тип затем, необходимо рассмотреть реализацию, которой Равняется IEquatable <> и переопределение (возражают) и GetHashCode (), если значение по умолчанию (ссылка или структура) равенство не достаточно для определения равенства ключей. Необходимо также сделать ключевой тип неизменным для предотвращения странных вещей случай, если ключ видоизменен после того, как он был вставлен в словарь (например, потому что мутация заставила свой хэш-код изменяться).

17
ответ дан 23 November 2019 в 22:44
поделиться
class Test
{
    Dictionary<int, string> entities;

    public string GetEntity(int code)
    {
        // java's get method returns null when the key has no mapping
        // so we'll do the same

        string val;
        if (entities.TryGetValue(code, out val))
            return val;
        else
            return null;
    }
}
10
ответ дан 23 November 2019 в 22:44
поделиться