我收到了这一行的消息,我使用了本地变量" name",这是没有设置的。
string firstname = name;
但是我在这一行设置了变量名
name = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
我的错误在哪里?我如何设置从名称到名字的值?
private void LoadUserInfo()
{
string name;
var fb = new FacebookClient(App.AccessToken);
fb.GetCompleted += (o, e) =>
{
name = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
});
string firstname = name;
fb.GetTaskAsync("me");
}
public void LoadUserInfo()
{
using (FacebookDataContext db = new FacebookDataContext(DBConnectionstring))
{
FacebookClient fb = new FacebookClient(App.AccessToken);
fb.GetCompleted += (o, e) =>
{
var result = (IDictionary<string, object>)e.GetResultData();
var FBName = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
db._fbcontacts.InsertOnSubmit(new FacebookContactsList { Name = FBName });
db.SubmitChanges();
};
fb.GetTaskAsync("me");
}
}
答案 0 :(得分:0)
以下行位于GetCompleted
事件的事件处理程序块中。因此,它将在事件发生时执行,该事件发生在fb.GetTaskAsync("me")
调用并完成之后:
name = String.Format("{0} {1}", .......);
这意味着,在您尝试使用name
变量的那一刻,它尚未设置:
string firstname = name;
我对firstname
稍后您将采取的操作一无所知..事情是,您需要在设置 firstname
之后设置name
例如,在同一个事件处理程序块中:
fb.GetCompleted += (o, e) =>
{
name = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
string firstname = name;
....
});
更新:
FacebookClient fb = new FacebookClient(App.AccessToken);
fb.GetCompleted += (o, e) =>
{
var result = (IDictionary<string, object>)e.GetResultData();
var FBName = String.Format("{0} {1}", (string)result["first_name"], (string)result["last_name"]);
using (FacebookDataContext db = new FacebookDataContext(DBConnectionstring))
{
db._fbcontacts.InsertOnSubmit(new FacebookContactsList { Name = FBName });
db.SubmitChanges();
}
};
fb.GetTaskAsync("me");