0

StringReader次のようなものを呼び出した後、なぜ空になるのか興味があります。

        XPathDocument xPathDoc;
        StringReader strReader = new StringReader(l_xmlFile.content);
        xPathDoc = new XPathDocument(strReader);

l_xmlFile.contentは文字列であり、適切にロードされますxPathDocが、このコードの最後の行strReader(つまり、その_sメンバー) の後は null であり、長さは 0 です。なぜそれが起こっているのですか? これについてmsdnには何も言及されていません

4

2 に答える 2

2

MSDN:

TextReaderオブジェクトを使用してXMLデータをロードした後、TextReaderオブジェクトのカーソルがデータの最後に配置されます。データを再度読み取るには、TextReaderオブジェクトをリセットする必要があります。

それはそれに答えますか?

于 2011-11-29T19:40:07.370 に答える
2

これは .NET ではかなり一般的な動作で、XPathDocument オブジェクトが入力オブジェクトの所有権を取得します。読み取りが完了したら、Dispose() メソッドを呼び出します。_s内部と_lengthフィールドをリセットするのは StringReader.Dispose() です。

XPathDocument(TextReader) コンストラクターの MSDN ドキュメントはかなりぎこちないですが、そう解釈される可能性があります。

于 2011-11-29T19:59:40.333 に答える