2009-02-14 132 views
1

我通常会遇到此错误,并且(始终)不知道如何解决该问题。 这一次我也,看来我不理解一个概念或缺少的东西 下面的代码未将对象引用设置为对象的实例

 // 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 

请一些帮助,并发生了什么 感谢

+0

可能重复[什么是.NET中的NullReferenceException?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net) – Justin 2011-12-16 15:05:11

回答

3

我终于找到了问题 这是因为我的防火墙似乎阻止连接到Visual Studio。 现在,它在不改变在所有工作:) 感谢您的支持

+0

你应该赶上,当你不能连接;) – Stormenet 2009-02-14 11:38:06

+0

哦是的,这将是测试功能后:) – 2009-02-15 08:59:35

0

可能是也有一些解释Timeline.Friends为空,可能时间轴为空。我建议你看一下异常的堆栈跟踪,并将其记录到你的twitter框架的文档中。

+0

nop它不是null我看:( – 2009-02-14 11:09:48

2

这个错误是一个痛苦,它基本上意味着你正在访问的某些可放大的内容仍然是空的。

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

Users users = core.GetTimeline().Friends; 

OK,我一直在寻找的twiteroo文档,这是一个有点稀疏,我想你一定需要实例时间线的一个实例传递到GetTimeline,(它返回一组用户,不是很好地命名为恕我直言)。我无法弄清楚的是如何启动时间轴实例。如果bthb说,它可能只是核心,也许用户名或密码错误,或者它不能连接到Twitter吗?好的,它不是时间轴是null,(这是一个枚举!

+0

什么是空对象?核心或用户? 用户为NULL – 2009-02-14 11:12:38

+0

我现在认为它的核心是空的。可能是因为用户名或密码错误? – 2009-02-14 11:25:13

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); 
} 
1

它可能是核心,用户名,密码或Timeline.Friends,不可能知道你给我们的信息。

1

如果我是你,我会在错误的位置放一个断点,然后在Timeline.Friends上贴一个手表,并检查它是否为空,如果它没有,那么在core.GetTimeline(Timeline.Friends)并看看是否返回null。

它应该给你一个正确方向的推动,你可能需要阅读twitter API的文档,找出为什么其中任何一个返回null。

+0

没有人返回空我检查了 – 2009-02-14 11:18:49

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); 
    } 
} 

如果运行没有异常的对象之一可能是零。

1

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

首先,对象引用可以被认为是函数或类中的变量。这个术语也可能指代期望特定引用对象的函数参数。最初,变量的值为NULL,直到使用'='运算符将其设置为值。通常你会在同一个语句中有一个变量声明和'='操作。

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

考虑以下代码:

Integer my_int; 
my_int = new Integer(5); 

在该示例中, 'my_int' 是对象引用Integer对象实例被创建。

如果您尝试访问“my_int”,在分配给一个Integer实例引用之前,那么你将有错误,“一个对象引用(my_int)未设置为对象的实例Integer)“。