Статические члены класса экземпляра - PullRequest
8 голосов
/ 05 мая 2009

Статические члены класса экземпляра живут только столько времени, сколько сам экземпляр, или статический член будет жить в течение всего жизненного цикла приложения?

Например, скажем, у меня есть Hashtable в качестве статического свойства. Если бы я добавил в него элементы из одного «Экземпляра», будут ли они доступны из другого «Экземпляра»?

1 Ответ

17 голосов
/ 05 мая 2009

Они живут на протяжении всей жизни AppDomain. (Для приложений Windows это, как правило, время жизни процесса; это может быть не так, в зависимости от того, что именно вы делаете. AppDomains периодически перерабатываются в ASP.NET.)

Не думайте, что статические переменные являются общими для экземпляров, - думайте, что они принадлежат к типу 1006 *, а не к какому-либо конкретному экземпляру. Это облегчает понимание того, как все работает, когда вы никогда не создаете любых экземпляров.

Например:

class Test
{
    static int x = 0;

    static void Main()
    {
        x = 10;
        Console.WriteLine(x);
    }
}

Не существует экземпляров для "общего доступа" Test.x - но это нормально, потому что он связан с типом Test, а не с экземплярами из Test.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...