2013-03-21 64 views
0

我不是一個專家程序員,大多是自我訓練的。目前我的項目是爲C#for Windows phone編寫的應用程序創建一個XML解析器。 要了解的是,我想演示張貼在這裏:http://www.developer.nokia.com/Community/Wiki/Parse_Local_XML_file_in_Windows_Phone在C語言中爲windows phone創建一個xml解析器的問題#

,直到我得到以下的部分全部是好的:

 private void btnparse_Click(object sender, RoutedEventArgs e) 
    { 
      this._parser = XMLParser.Instance;   
      StreamResourceInfo strm = Application.GetResourceStream(new Uri("/LocalXmlParsing;component/States.xml",UriKind.Relative)); 
    //needs to be done only once 
      StreamReader reader = new StreamReader(strm.Stream); 
      string data = reader.ReadToEnd(); 
      _parser.DataToParse = data; 
      _parser.ParseStateData(); 
      lstStates.ItemsSource = _parser.StateCollection; 
} 

我得到的錯誤:「錯誤2名‘_parser’在當前情況下不存在「 我會採取任何建議,你們可以給我。

+1

您是否在名爲_parser的類上定義了字段或屬性? – 2013-03-21 20:26:03

+1

我並不是說要苛刻;我的建議是在複製粘貼代碼之前學習一些關於C#的知識,並想知道爲什麼它不起作用。這可能需要一段時間,但從長遠來看,這將爲您節省大量時間。 – 2013-03-21 20:30:32

回答

3

this始終是對當前對象(其成員函數執行的對象)的引用。所以this._parser被稱爲"field"或「成員變量」。這些字段必須在類定義中定義。你沒有向我們展示完整的類定義,但它當然不存在。這就是編譯器所抱怨的。

它應該是這個樣子:

class Foo { 
    private XMLParser _parser; 

    // your functions, like btnparse_Click 
} 

或者,如果你只打算使用的解析器的一個功能的情況下,只是讓一個local variable

private void btnparse_Click(object sender, RoutedEventArgs e) 
{ 
    XMLParser parser = XMLParser.Instance; 
    ... 

你也可以使用一個implicitly typed local variable

private void btnparse_Click(object sender, RoutedEventArgs e) 
{ 
    var parser = XMLParser.Instance; 
    ... 
+0

謝謝!我現在明白了,我知道也許我應該閱讀關於C#編程的更多內容,嘗試和錯誤已經爲我工作了。 – Datamisc 2013-03-21 22:29:32

0

檢查,如果_parser被定義爲VA類riable或如果它是父類中的變量(如果您的類繼承了基類)。我沒有看過整個代碼,但這是錯誤所暗示的。