Сборка мусора и синтаксис свойств - PullRequest
0 голосов
/ 02 октября 2011

У меня есть класс, который нуждается в информации из файла XML.У меня есть другой класс, который создан для удовлетворения этой потребности.Как только требуемая информация находится в первом классе, я хочу, чтобы программа чтения XML собирала мусор.

Теперь программа чтения XML получает необходимую информацию и сохраняет ее в закрытых полях.Первый класс запрашивает эти поля и получает информацию.Я знаю, что если я сделаю запрос к полям, используя функции, предусмотренные в программе чтения XML, остаточной связи не будет, будет ли это также иметь место, если я использую свойства в программе чтения XML?

public float Var
{
    get { return someVar; }
    set { someVar = value; }
}

Ответы [ 2 ]

1 голос
/ 02 октября 2011

Не совсем понятен твой вопрос.Вы можете использовать XmlReader в использовании, если хотите разрешить сборку этого экземпляра после обработки XML-файла.Назначение свойств закрытым переменным, как вы сказали, звучит правильно.GC может собирать экземпляр XmlReader, если нет живых ссылок.Вы можете попробовать ниже пример .

, используя оператор , определяющий область действия, вне которой объект или объекты будут расположены.Рекомендуется вызывать метод Dispose для таких объектов, как XmlReader, которые имеют обработчики файлов.

   var myProperties;

    using (XmlReader reader = XmlReader.Create("file1.xml"))
    {
        while (reader.Read())
        {
                // myProperties = reader.....;
            }
        }
    }

Приведенный выше код - это хороший способ проверить, существует ли какая-либо проблема со сборкой мусора, поскольку он вызывает исключение вв любом случае, если вы попытаетесь сослаться на свойства XmlReaders вне оператора using.Если вы присвоили значения закрытым переменным, это должно подойти.

0 голосов
/ 02 октября 2011

Если у вас есть ссылка на XmlReader (например, в поле вашего класса), он не может быть удален, пока владелец экземпляра еще жив.

Если у вас нет ссылок на него, он будет собирать мусор.

...