Доступ к переменной, объявленной без имени (просто новое ключевое слово)

#c#

#c#

Вопрос:

У меня есть набор данных с именем dS, в который я хочу загрузить XML.

Поэтому я бы использовал функцию dS.ReadXml();

Параметром для ReadXml функции является XmlTextReader Object .

Если я передаю объект как

 ds.ReadXml(new XmlTextReader(Application.StartupPath   "\MyDataSource.xml"));
  

набор данных будет загружен. Но позже я хочу закрыть этот XmlTextReader объект. Хотя я не объявлял ее с таким именем, как

 XmlTextReader reader = new XmlTextReader(somepath);
  

Как я могу закрыть программу чтения???

Комментарии:

1. вы уже ответили себе: с переменной 🙂

Ответ №1:

Вам нужно будет использовать переменную, иначе вы не сможете получить к ней доступ.

И пока вы этим занимаетесь, используйте using инструкцию:

 string path = Path.Combine(Application.StartupPath, "MyDataSource.xml"));
using (var reader = new XmlTextTreader(path))
{
  ds.ReadXml(reader);
}
  

using Инструкция автоматически вызывает Dispose on reader при выходе из области действия using инструкции.

Примечание: Вы должны использовать Path.Combine вместо объединения пути самостоятельно. Избавляет вас от множества проблем.

Ответ №2:

Объект XmlTextReader используется объектом DataSet, поэтому он не собирается как мусор.

Теперь, если вдуматься, это означает, что объект DataSet управляет объектом XmlTextReader *.

Итак, лучший способ — вызвать:

 ds.Dispose()
  

Это приведет к тому, что объект DataSet освободит свои ресурсы, включая объект XmlTextReader*.