2011-05-13 71 views
0

我已经声明了一个类变量在这里名字“STR”不存在于当前上下文存在

void downloader_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
    { 
     if (e.Error == null) 
     { 
      Stream responseStream = e.Result; 
      StreamReader responseReader = new StreamReader(responseStream); 
      string response = responseReader.ReadToEnd(); 


      string[] split1 = Regex.Split(response, "},{"); 
      List<string> pri1 = new List<string>(split1); 
      pri1.RemoveAt(0); 
      string last = pri1[pri1.Count() - 1]; 
      pri1.Remove(last); 

     } 
    } 

,我想用classv良莠不齐STR在这种方法

void AddPrimaryMarkerGraphics(object sender, getPrimaryListCompletedEventArgs e) 
     { 
      List<PrimaryClass> primaryList = new List<PrimaryClass>(e.Result); 
      PrimaryClass sc = new PrimaryClass(); 
      for (int a = 0; a <= e.Result.Count - 1; a++) 
      { 
       string schname = e.Result.ElementAt(a).PrimarySchool; 
       string tophonour = e.Result.ElementAt(a).TopHonour; 
       string cca = e.Result.ElementAt(a).Cca; 
       string topstudent = e.Result.ElementAt(a).TopStudent; 
       string topaggregate = e.Result.ElementAt(a).TopAggregate; 
       string topimage = e.Result.ElementAt(a).TopImage; 

       foreach (string item in str) 
       { 
        string abc = "[{" + item + "}]"; 
        byte[] buf = System.Text.Encoding.UTF8.GetBytes(abc); 
        MemoryStream ms = new MemoryStream(buf); 

        JsonArray users = (JsonArray)JsonArray.Load(ms); 

        var members = from member in users 
            //where member["SEARCHVAL"] 
            select member; 

        foreach (JsonObject member in members) 
        { 
         string schname = member["SEARCHVAL"]; 
         string axisX = member["X"]; 
         string axisY = member["Y"]; 
         // Do something... 
         string jsonCoordinateString = "{'Coordinates':[{'X':" + axisX + ",'Y':" + axisY + "}]}"; 
         CustomCoordinateList coordinateList = DeserializeJson<CustomCoordinateList>(jsonCoordinateString); 

         GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer_Primary"] as GraphicsLayer; 

         for (int i = 0; i < coordinateList.Coordinates.Count; i++) 
         { 
          Graphic graphic = new Graphic() 
          { 
           Geometry = new MapPoint(coordinateList.Coordinates[i].X, coordinateList.Coordinates[i].Y), 
           Symbol = i > 0 ? PrimarySchoolMarkerSymbol : PrimarySchoolMarkerSymbol 

          }; 
          graphic.Attributes.Add("PrimarySchool", schname); 
          graphic.Attributes.Add("xcoord", axisX); 
          graphic.Attributes.Add("ycoord", axisY); 
          graphicsLayer.Graphics.Add(graphic); 
         } 
        } 
       } 
      } 
     } 

这就是错误显示,帮助?

+1

您需要展示更多的代码,我担心,因为它明显令人信服的str不在背景之下。 – BugFinder 2011-05-13 06:38:20

+0

pri1的数据类型是什么?你能发布完整的代码吗? – 2011-05-13 06:38:26

+0

这够了吗? – GJJ 2011-05-13 07:08:35

回答

4

你几乎可以肯定,宣布在类本身(作为实例变量)的一个(即作为本地变量),而不是直接的方法变量。例如:

// Wrong 
class Bad 
{ 
    void Method1() 
    { 
     List<string> str = new List<string>(); 
    } 

    void Method2() 
    { 
     foreach (string item in str) 
     { 
      ... 
     } 
    } 
} 

// Right 
class Good 
{ 
    private List<string> str = new List<string>(); 

    void Method1() 
    { 
     str = CreateSomeOtherList(); 
    } 

    void Method2() 
    { 
     foreach (string item in str) 
     { 
      ... 
     } 
    } 
} 

作为一个侧面说明:如果你是很新的C#,我会强烈建议您停止Silverlight的工作是暂时的,并写一些控制台应用程序只是让你去,并教你基本知识。这样,您可以将C#作为语言和核心框架类型(例如文本,数字,集合,I/O)专注于C#,然后再开始编写GUI。 GUI编程通常涉及到更多的东西(线程,XAML,绑定等),并试图一次性学习所有东西只会让事情变得更加困难。

+0

我有一个选择,它已被分配给我,还有很多时间 – GJJ 2011-05-13 08:03:24

+0

@GJJ:你是什么意思,“它已被分配给我”?你在学习方式上没有任何选择?一次学习一步就能更快地达到目标。 – 2011-05-13 08:50:12

+0

@Jon它的任务,我不能选择项目采取 – GJJ 2011-05-13 09:11:23

0

它不起作用,因为str未在其他变量中声明。这是sscopong问题。你可以将str作为输入传递给另一个函数吗?

相关问题