Доступ к словарю из методов вне main в C # - PullRequest
3 голосов
/ 25 октября 2010

Я создаю словарь и затем заполняю его записями в main (), затем вызываю метод, который использует указанный словарь. Если не считать словарь в аргументах, передаваемых этому методу, как я могу получить к нему доступ, не получив сообщение об ошибке 'Требуется ссылка на объект для нестатического поля, метода или свойства' XXX.YYY.dict '?

Редактировать: вот запрашиваемый код:

public static void Main()

    {
        ulong board = AS | KH | FD | FC | TH | SH | NC;
        Dictionary<ulong, int> dict; dict = new Dictionary<ulong, int>();

        for (int a = 0; a < 49344; a++)
        {
            dict.Add(helloworld.Table.handhashes[a], helloworld.Table.ratings[a]);
        }


        int hand = 0;

        for (int ai1 = 0; ai1 < 100000000; ai1++)
        {
            hand = FCheck(board);
        }
}

Ошибка в FCheck, следующая строка:

FCheck = dict(condensedBoard);

Ответы [ 4 ]

3 голосов
/ 25 октября 2010

Сделайте его статическим членом класса вашей Программы.Вы не показывали никакого кода, но похоже, что у вас есть консольное приложение, поэтому оно будет работать примерно так:

class Program
{
   static Dictionary<string, string> _myDict;

   static void Main(string[] args)
   {
       // Fill it here
   }

   void MyFunc()
   {
      // Access it here
   }
 }
2 голосов
/ 25 октября 2010

Вы можете сделать словарь статической переменной, которая просто заполняет main, но гораздо приятнее передавать переменные классам, которые в них нуждаются

1 голос
/ 25 октября 2010

Вы можете сделать свой словарь статическим полем в классе.Но статические поля следует использовать с осторожностью, поэтому передача их в качестве параметра, вероятно, является лучшим решением.Особенно, если ваше приложение со временем станет больше.

1 голос
/ 25 октября 2010

Сделать глобальным?

static Dictionary<X, X> Entries;

public static void main(string[] args)
{ 
    // populate and then call dostuff 
}

public static X dostuff(a) 
{
    return Entries[a];
}

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...