不可调用的成员''不能像方法一样使用

时间:2015-06-24 07:54:26

标签: c# compiler-errors opcode

我正面临一个问题。 所以我会马上把代码放进去;

public static List<ushort> blockedOpcodes = new List<ushort>();

    public static bool isOpcodeAllowed(ushort opcode)
    {
        lock (locker)
        {
            if (blockedOpcodes.Contains(opcode))
            {
                Log1.LogMsg("Oops! Someone tried to send a blocked packet: 0x{" + opcode + ":X}");
                return false;
            }
            return true;
        }
    }


    public static void Load()
    {
        lock (locker)
        {
            StreamReader reader;
            using (reader = new StreamReader("filter.txt"))
            {
                string str = null;
                while ((str = reader.ReadLine()) != null)
                {
                    blockedOpcodes.Add(Convert.ToUInt16(str));
                }
            }
            Log1.LogMsg("Opcode filter loaded!");
            using (reader = new StreamReader("specialip.txt"))
            {
                string item = null;
                while ((item = reader.ReadLine()) != null)
                {
                    specialIPs.Add(item);
                }
            }
        }
    }

所以这些是在一个名为'Program'的类中我想要做的是收集数据'操作码'以阻止'blockedOpcodes'

if (Project_name.Program.blockedOpcodes(current.Opcode))

这就是错误出现的地方..

错误:

  

错误1非可调用成员'Project_name.Program.blockedOpcodes'   不能像一个人一样使用   方法。 C:\ Users \ skipper \ Desktop \ Project_name \ without \ src2 -   复制\ Project_name \ Clients.cs 584 63 Project_name

任何帮助将不胜感激,谢谢! PS:我是C#的初学者,我已经开始像7天前了..

1 个答案:

答案 0 :(得分:3)

显然你需要

if (Project_name.Program.blockedOpcodes[current.Opcode] != 0)

而不是:

if (Project_name.Program.blockedOpcodes(current.Opcode))

因为blockedOpcodes是一个列表而不是一个方法。

编辑:您需要将列表值与0(或任何您认为是“无效”值)进行比较,因为您在列表中存储了int值。

编辑:要检查给定的OpCode是否在您的列表中,只需调用:

if (blockedOpcodes.Contains(current.Opcode)) { /* ... */ }