【问题标题】:Strange null reference exceptions in a function I wrote我写的函数中出现奇怪的空引用异常
【发布时间】:2012-02-27 11:39:35
【问题描述】:
private void GoogleTalkClient_OnMessage(object sender, jabber.protocol.client.Message msg)
    {
        connectionsNumber.Maximum = rosterManager.Count;
        if (session.Keys.Contains<string>(msg.From.Bare)){

            session.TryGetValue(msg.From.Bare,out thissession);

        }else{
            if (cleverbot.Keys.Contains<string>(msg.From.Bare)){
                cleverbot.TryGetValue(msg.From.Bare,out bot);
            }else{
                bot = factory.Create(ChatterBotType.CLEVERBOT);
                if (bot != null)
                cleverbot.Add(msg.From.Bare, bot);
            }
            thissession = bot.CreateSession();
            if (thissession != null)
            session.Add(msg.From.Bare, thissession);
        }
        connectionsNumber.Value = session.Count;
        jabber.protocol.client.Message reply = new jabber.protocol.client.Message(GoogleTalkClient.Document);
        reply.Body = thissession.Think(Grammarcheck(msg.Body));
        reply.To = msg.From;
        GoogleTalkClient.Write(reply);
    }

代码是 C#,它给我所有 session.Add() 和cleverbot.Add() 语句的空引用错误,我不知道为什么(cleverbot 和 session 是字典)

【问题讨论】:

  • 要么您忘记初始化cleverbotsession,要么您传入的数据为空。使用调试器单步调试代码,看看它是什么。
  • 您是否正确初始化了字典?仅从那段代码来看,一个可能的解决方案不能说太多。
  • 您必须使用Dictionary&lt;string,Session&gt; session = new Dictionary&lt;string,Session&gt;();Dictionary&lt;string,CleverBot&gt; clerverbot = new Dictionary&lt;string,CleverBot&gt;(); 初始化它们。这个Dictionary&lt;string,Session&gt; session; 单独不会创建字典,它将为空。
  • 是的,数据不为空,我用调试器检查过。
  • 那么键为空(msg.From.Bare == null)或msg为空或msg.From为空。

标签: c# .net dictionary xmpp nullreferenceexception


【解决方案1】:

字典未正确初始化

【讨论】:

    猜你喜欢
    • 2010-09-28
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 2014-08-23
    • 1970-01-01
    相关资源
    最近更新 更多