名称’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 pri1 = new List(split1); pri1.RemoveAt(0); string last = pri1[pri1.Count() - 1]; pri1.Remove(last); } } 

我想在这个方法中使用classv ariable str

 void AddPrimaryMarkerGraphics(object sender, getPrimaryListCompletedEventArgs e) { List primaryList = new List(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(jsonCoordinateString); GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer_Primary"] as GraphicsLayer; for (int i = 0; i  0 ? PrimarySchoolMarkerSymbol : PrimarySchoolMarkerSymbol }; graphic.Attributes.Add("PrimarySchool", schname); graphic.Attributes.Add("xcoord", axisX); graphic.Attributes.Add("ycoord", axisY); graphicsLayer.Graphics.Add(graphic); } } } } } 

那个错误显示的地方,有帮助吗?

您几乎肯定在方法中声明变量(即作为局部变量),而不是直接在类本身中声明(作为实例变量)。 例如:

 // Wrong class Bad { void Method1() { List str = new List(); } void Method2() { foreach (string item in str) { ... } } } // Right class Good { private List str = new List(); void Method1() { str = CreateSomeOtherList(); } void Method2() { foreach (string item in str) { ... } } } 

作为旁注:如果您对C#不熟悉,我强烈建议您暂时停止使用Silverlight,并编写一些控制台应用程序,以便让您前进,并教您基本知识。 这样,您可以将C#作为一种语言和核心框架类型(例如文本,数字,集合,I / O),然后再开始编写GUI。 GUI编程通常涉及学习更多东西(线程,XAML,绑定等),并试图一次性学习所有东西只会让事情变得更难。

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