你调用的对象是空的

时间:2009-02-14 11:01:45

标签: c# object instance

我经常得到这个错误,并且(总是)不知道如何解决它。 这次我也得到了它,似乎我不理解一个概念或遗漏一些东西 这是代码

        // create a new twitteroo core with provided username/password
        TwitterooCore core = new TwitterooCore(username, password);

        // request friends timeline from twitter
        Users users = core.GetTimeline(Timeline.Friends); // error here

请一些帮助以及对正在发生的事情的一些解释 感谢

8 个答案:

答案 0 :(得分:3)

我终于找到了问题 这是因为我的防火墙似乎阻止了与Visual Studio的连接。 现在它可以完全没有任何变化:) 感谢您的支持

答案 1 :(得分:2)

这个错误是一种痛苦,它基本上意味着你正在访问的一些可用性仍然是空的。

在这种情况下,您在哪里初始化时间轴?你的代码应该是这样的:

Users users = core.GetTimeline().Friends;

好的,我一直在看twiteroo文档,它有点稀疏,我认为你肯定需要实例化一个Timeline实例传递给GetTimeline,(它返回一个用户集合,名字不是很好恕我直言)。我无法弄清楚如何启动时间轴实例。

好吧,时间线不是空的,(这是一个枚举!)所以正如bthb所说,它只能是核心,也许用户名或密码错误,或者它无法连接到推特?

答案 2 :(得分:1)

如果您反编译dll,您将看到GetTimeline(Enum)接受Enumeration参数。

构造函数调用没问题:

TwitterooCore core = new TwitterooCore(username, password);

来源:

public TwitterooCore(string username, string password)
{
        this._username = username;
        this._password = password;
}

GetTimeline是尝试连接的。

public Users GetTimeline(Timeline timeline)
{
    WebClient client = new WebClient();
    XmlDocument document = new XmlDocument();
    string xml = string.Empty;
    byte[] buffer = null;
    client.set_Credentials(this.GetCredentials());
    buffer = client.DownloadData(this.GetTimelineUrl(timeline));
    xml = Encoding.UTF8.GetString(buffer);
    document.LoadXml(xml);
    return this.DecodeStatusXml(document);
}

答案 3 :(得分:1)

它可能是核心,用户名,密码或Timeline.Friends,无法通过您提供给我们的信息知道哪些。

答案 4 :(得分:1)

如果我是你,我会在错误的行上设置一个断点,然后在Timeline.Friends上查看并检查它是否为null,如果不是那么就把表放在core.GetTimeline(Timeline.Friends)上看看那些返回null。

它应该给你一个正确方向的推动,你可能必须阅读你使用的twitter API的文档,以找出其中任何一个返回null的原因。

答案 5 :(得分:1)

如何检查您的代码:

Users users = null;
if (Timeline != null)
{
    TwitterooCore core = new TwitterooCore(username, password);
    if (core != null)
    {
        var friends = Timeline.Friends
        if (friends != null)
            users = core.GetTimeline(Timeline.Friends);
    }
}

如果没有例外,其中一个对象可能为空。

答案 6 :(得分:1)

错误消息中有两个特定短语,对象引用对象实例。在处理OOP语言时,这些概念非常基础。

首先,可以将对象引用视为函数或类中的变量。该术语还可以指期望对对象的特定引用的函数参数。最初,变量的值为NULL,直到使用'='运算符将其设置为值。通常,您将在同一语句中使用变量声明和“=”操作。

术语对象实例是指使用语法new创建的对象。当您调用new来初始化对象时,会分配一个未使用的内存位置来存储该对象的副本,直到该程序结束,或者该对象超出范围并被垃圾回收器释放。在创建时,对象属性由调用以创建对象的构造函数方法定义。

考虑以下代码:

Integer my_int;
my_int = new Integer(5);

在此示例中,“my_int”是正在创建的Integer对象实例对象引用

如果您尝试访问“my_int”,在为其分配对Integer 实例的引用之前,则会出现错误,“对象引用(my_int)未设置为对象的实例Integer)“。

答案 7 :(得分:0)

可能是Timeline.Friends为null,可能是Timeline为null。我建议你查看异常的堆栈跟踪和twitter框架的文档。