这段代码有什么问题?它说错误标识符预期

时间:2011-02-06 17:58:51

标签: c#

    public static Dictionary<uint, Items.GroundItem> ItemFilter(Client C, Dictionary<uint, Items.GroundItem> oggettiInteri)
    {
        Dictionary<uint, string> Filtr = new Dictionary<uint, string>();
        Dictionary<uint, Items.GroundItem> Rientro = new Dictionary<uint, Items.GroundItem>();

        if (C.Looting)
            Filtr = Program.RareItem; //Program doesnt contain defenition for Rare item
        else if (C.LootMoney)
        {
            Filtr.Add(1090020, "Money");
            Filtr.Add(1091000, "Money");
            Filtr.Add(1091010, "Money");
            Filtr.Add(1091020, "Money");
        }    
    }

3 个答案:

答案 0 :(得分:2)

您的初始错误是因为此行不完整。

Filtr = Program.;

看起来你没有写完那条线,否则你不小心删掉了那里的一些代码。


新错误是因为您定义的类程序不包含RareItem的任何定义,否则您无法访问它。

您需要定义查找类Program的定义,添加一个RareItem属性,并在某处将其设置为某个值:

class Program
{
    public static Item RareItem { get; }

    static void Main()
    {
        RareItem = new Item(); // TODO: Finish this.
    }

    ...
}

顺便说一句,公共静态全局数据通常不是一个好主意。您可能想尝试找到不同的设计。


我还建议使用花括号和一致的缩进来更清楚地说明发生了什么:

if (C.Looting)
{
    Filtr = Program.RareItem;
}

while (C.LootMoney)
{
    Filtr.Add(1090020, "Money");
    Filtr.Add(1091000, "Money");
    Filtr.Add(1091010, "Money");
    Filtr.Add(1091020, "Money");
}    

注意while循环不会给你一个无限循环。

答案 1 :(得分:1)

Filtr = Program.;

这是错的,你需要点后面的东西。

答案 2 :(得分:0)

您的转让声明不完整。

if(C.Looting)
{
  Filtr = Program.  // incomplete
}

在Program类中,如果你已经定义了另一个Dictionary类型的静态变量,那么就说LocalFilter;然后你可以将它分配给Filtr;

if(C.Looting)
{
  Filtr = Program.LocalFilter;
}