当前上下文中不存在名称“str”

时间:2011-05-13 06:35:38

标签: c# silverlight syntax

我在这里声明了一个类变量

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

错误显示的地方,帮助?

2 个答案:

答案 0 :(得分:4)

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

// 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),然后再开始编写GUI。 GUI编程通常涉及学习更多东西(线程,XAML,绑定等),并且试图一次性学习所有东西只会让事情变得更难。

答案 1 :(得分:0)

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