То, когда расположил бы метод не, называют?

Чтобы подробно остановиться на ответе @PhiLho, можно центрировать очень большое изображение (или любое изображение размера) на странице с:

{ 
background-image: url(_images/home.jpg);
background-repeat:no-repeat;
background-position:center; 
}

Или Вы могли использовать меньшее изображение с цветом фона, который соответствует фону изображения (если это - сплошной цвет). Это может или не может удовлетворить Вашим целям.

{ 
background-color: green;
background-image: url(_images/home.jpg);
background-repeat:no-repeat;
background-position:center; 
}
7
задан Community 23 May 2017 в 12:09
поделиться

4 ответа

Целью финализатора здесь является просто мера предосторожности против утечки памяти (если вы случайно , а не вызовете Dispose явно). Это также означает, что вам не нужно удалять свои объекты, если вы хотите, чтобы они высвобождали ресурсы при завершении работы программы, поскольку сборщик мусора в любом случае будет вынужден завершить работу и собрать все объекты.

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

~MyClass()
{
    Dispose(false);
}

public void Dispose()
{
    Dispose(true);
    GC.SuppressFinalize(this);
}

protected void Dispose(disposing)
{
    if (!this.disposed)
    {
        if (disposing)
        {
            // Dispose managed resources here.
        }
        // Dispose unmanaged resources here.
    }
    this.disposed = true;
}

Причина, по которой вы не хотите удалять управляемые ресурсы в финализаторе, заключается в том, что при этом вы фактически создаете сильные ссылки на них, и это может помешать GC правильно выполнять свою работу и собирать их. Неуправляемые ресурсы (например,

10
ответ дан 6 December 2019 в 11:50
поделиться

Это в основном для того, чтобы защитить себя. Вы не можете диктовать, что будет делать конечный пользователь вашего класса. Предоставляя финализатор в дополнение к методу Dispose, GC будет «Dispose» вашего объекта, соответствующим образом освобождая ваши ресурсы, даже если пользователь забыл вызвать Dispose () или неправильно использует ваш класс.

4
ответ дан 6 December 2019 в 11:50
поделиться

Метод dispose должен вызываться явно, либо путем вызова Dispose (), либо с помощью наличие объекта в операторе using. GC всегда будет вызывать финализатор, поэтому, если есть что-то, что должно произойти до удаления объектов, финализатор должен, по крайней мере, проверить, чтобы убедиться, что все в объекте очищено.

Вы хотите избежать очистки объектов в финализаторе, если это вообще возможно, потому что это вызывает дополнительную работу по сравнению с их удалением перед рукой (например, вызов dispose), но вы всегда должны, по крайней мере, проверять финализатор, если есть лежащие объекты вокруг этого нужно удалить.

но вы всегда должны по крайней мере проверять финализатор, если есть объекты, которые нужно удалить.

но вы всегда должны, по крайней мере, проверять финализатор, есть ли поблизости объекты, которые необходимо удалить.

1
ответ дан 6 December 2019 в 11:50
поделиться

Финализатор вызывается при сборке мусора. Dispose необходимо вызвать явно. В следующем коде финализатор будет вызываться, но метод Dispose - нет.

class Foo : IDisposable
{
  public void Dispose()
  {
    Console.WriteLine("Disposed");
  }

  ~Foo()
  {
    Console.WriteLine("Finalized");
  }
}

...

public void Go()
{
  Foo foo = new Foo();
}
2
ответ дан 6 December 2019 в 11:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: