0

私はエキスパートプログラマーではなく、ほとんどが自己訓練です。現在、私のプロジェクトは、Windows Phone用のC#で記述しているアプリケーション用のXMLパーサーを作成することです。それを学ぶために、私はここに投稿されたデモを試しています:http ://www.developer.nokia.com/Community/Wiki/Parse_Local_XML_file_in_Windows_Phone

次の部分に到達するまで、すべてが良好です。

     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」という名前は現在のコンテキストに存在しません」というエラーが表示されます。皆さんからのアドバイスをお受けします。

4

2 に答える 2

3

this常に現在のオブジェクトへの参照です (メンバー関数が実行されている)。そのため、 「フィールド」または「メンバー変数」this._parserと呼ばれます。これらのフィールドは、クラス定義で定義する必要があります。完全なクラス定義を示しているわけではありませんが、確かに存在しません。そして、それがコンパイラが不平を言っていることです。

次のようになります。

class Foo {
    private XMLParser _parser;

    // your functions, like btnparse_Click
}

または、その 1 つの関数のコンテキストでのみパーサーを使用する場合は、それをローカル変数にします。

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

暗黙的に型指定されたローカル変数を使用することもできます:

private void btnparse_Click(object sender, RoutedEventArgs e) 
{
    var parser = XMLParser.Instance;
    ...
于 2013-03-21T20:26:18.893 に答える
0

_parser がクラス変数として定義されているかどうか、または親クラスの変数であるかどうかを確認します (クラスが基本クラスを継承している場合)。私はコード全体を見ていませんが、それがエラーが示唆するものです。

于 2013-03-21T20:27:04.793 に答える