Член класса с неявным типом


person George Duckett    schedule 19.05.2011    source источник


Ответы (5)


2 причины:

  1. Для словаря требуются общие параметры Key и Value.
  2. Вы не можете писать такие переменные непосредственно внутри класса => вы можете использовать поля, свойства или методы

So:

class foo
{
    private Dictionary<string, string> bar = new Dictionary<string, string>();
}

Что касается того, почему вы не можете сделать это:

class foo
{
    private var bar = new Dictionary<string, string>();
}

Эрик Липперт рассказал об этом в сообщение в блоге.

person Darin Dimitrov    schedule 19.05.2011

Вы не указали тип ключа, он должен быть:

class foo
{
    Dictionary<string,string> bar = new Dictionary<string,string>();
}

Изменить: запрещено использовать «var» в случае полей класса.

person BitKFu    schedule 19.05.2011
comment
Исправлено, это было из-за var, который разрешен только в случае переменных-членов. - person BitKFu; 19.05.2011

Словарю нужны два параметра: тип ключа и тип значения.

var bar = new Dictionary<string, string>();
person JWL_    schedule 19.05.2011

«Словарь» означает набор пар ключ/значение. В реальном мире словарь миров — это книга, содержащая «Слова» и «Определения», здесь «Слово» является ключевым, а «Определение» — значением. Итак, очевидно, что вы не можете игнорировать «значение» при создании экземпляра Dictionary<TKey, TValue>.

person Alireza Maddah    schedule 19.05.2011

Словарь — это класс для сопоставления набора ключей с набором значений, поэтому вам необходимо указать параметр типа как для ключа, так и для значения. Например, если вы хотите найти цену акции на основе ее биржевого символа, вы можете использовать:

var stocks = new Dictionary<string, decimal>();
stocks.Add("MSFT", 25.5M);
stocks.Add("AAPL", 339.87M);
person Chris Fulstow    schedule 19.05.2011