使用Amrykid.Web.IRC API,C#foreach计数无法正确计数

时间:2014-10-15 09:17:13

标签: c# web foreach irc

我在计算irc频道中的总用户时遇到问题。 如果我的IRC机器人在所有用户之后加入,那么它将全部计算在内。如果有人离开,它就算正确了。但是,当有人加入时,它不会以某种方式将用户添加到计数中。

我的代码有什么问题?谢谢!

if (message.Replace("!", "").StartsWith("users"))
{
    try
    {
        int count = ch.UserCount = 0;

        foreach (string u in ch.Users)
        {
            count += 1;
        }

        _irc.SendMessage("Users Online: " + count, IRC.SupportedColors.Red, ch.Channel);
    }
    catch (Exception ee)
    {
        _irc.SendMessage("Error: " + ee.Message, IRC.SupportedColors.Red, ch.Channel);
    }
}

2 个答案:

答案 0 :(得分:2)

查看Amrykid.Web.IRCch.Users(其中chIRCChannel)是string[]

public string[] Users {
    get {
        return this._users;
    }
}

foreach完全能够正确地循环数组,但如果你想做的只是 count 用户,.Length会更有效率。

无论问题是什么:它与foreach无关,而与以下之一无关:

  • 图书馆越野车
  • 对图书馆的错误期望
  • 错误使用库

然而,似乎是Amrykid.Web.IRC的支持问题。

看了AddUser,它似乎只添加唯一的用户:

internal void AddUser(string user)
{
    Collection<string> source = new Collection<string>();
    try
    {
        foreach (string str in this._users)
        {
            source.Add(str);
        }
    }
    catch (Exception)
    {
    }
    if (!source.Contains(user))
    {
        source.Add(user);
    }
    this._users = null;
    this._users = source.ToArray<string>();
}

虽然此实施不是特别好,但它似乎是有效的。

答案 1 :(得分:0)

当我创建这个库时,我是一个新手程序员,所以我希望这个库会出错。虽然我查看代码已经有一段时间了,但我建议您使用更好的书库,例如https://github.com/meebey/SmartIrc4net。