2016-05-23 4 views
2

私は間違っていますか?実行がVKRequest.Dispatchの外になると、tmpはデータを失い、nullを返します。静的メソッドは値を返しません

更新

public class GroupClass 
{ 
    private static LinkedList<GroupClass> tmp = new LinkedList<GroupClass>(); 
    /* some code */ 
    public static LinkedList<GroupClass> GetGroupList() 
    { 
     VKRequest.Dispatch<VKList<VKGroup>> (new VKRequestParameters ("groups.get", "extended", "1", "filter", "admin, editor, moder", "fields", "photo_100"), (res) => 
     { 
      if (res.ResultCode == VKResultCode.Succeeded && res.Data.count > 0) 
      { 
       var item = res.Data.items[0]; 
       tmp.AddLast(new GroupClass (item.id, item.name, item.screen_name, item.photo_100));        
      } 
     }); //here 
     return tmp; 
    } 
} 
+4

ここで、tmpを初期化していますか? – Aimnox

+0

tmpは、メソッド内または静的メンバーとして外部で初期化する必要があります。コードを更新してもらえますか? – Umesh

答えて

0

あなたはラムダ式を呼び出す前に、ローカル変数にあなたの変数をコピーする必要があります。あなたはより多くの説明hereを見つけることができます。

public class GroupClass 
{ 
    private static LinkedList<GroupClass> tmp = new LinkedList<GroupClass>(); 
    /* some code */ 
    public static LinkedList<GroupClass> GetGroupList() 
    { 
     var tmp1 = tmp; 
     VKRequest.Dispatch<VKList<VKGroup>> (new VKRequestParameters ("groups.get", "extended", "1", "filter", "admin, editor, moder", "fields", "photo_100"), (res) => 
     { 
      if (res.ResultCode == VKResultCode.Succeeded && res.Data.count > 0) 
      { 
       var item = res.Data.items[0]; 
       tmp1.AddLast(new GroupClass (item.id, item.name, item.screen_name, item.photo_100));        
      } 
     }); //here 
     return tmp1; 
    } 
} 
+0

助けてくれてありがとうが、まだ「ヌル」 –

関連する問題