непонятки с инициализацией переменных
От: Charlito  
Дата: 10.07.07 05:28
Оценка:
Имеем след. код

public class SingleTest{    
private static SingleTest st;    
private SingleTest() { }    
public static SingleTest GetInstance()    
{        
if (st == null) st = new SingleTest();        
return st;    
}
}

public partial class _Default : System.Web.UI.Page 
{    
private SingleTest st = SingleTest.GetInstance();    
protected void Page_Load(object sender, EventArgs e)    {    }
}




Запускаем первый раз — SingleTest.st содержит null и соответственно инициализируется через GetInstance

Далее останавливаем отладку (Shift+F5) и запускаем еще раз — SingleTest.st сразу же содержит значение. Из за чего так и как с этим бороться?
Re: непонятки с инициализацией переменных
От: Дюша Россия http://www.danfoss.com/russia
Дата: 10.07.07 09:30
Оценка:
Здравствуйте, Charlito, Вы писали:

C>Имеем след. код


C>
C>public class SingleTest{    
C>private static SingleTest st;    
C>private SingleTest() { }    
C>public static SingleTest GetInstance()    
C>{        
C>if (st == null) st = new SingleTest();        
C>return st;    
C>}
C>}

C>public partial class _Default : System.Web.UI.Page 
C>{    
C>private SingleTest st = SingleTest.GetInstance();    
C>protected void Page_Load(object sender, EventArgs e)    {    }
C>}
C>




C>Запускаем первый раз — SingleTest.st содержит null и соответственно инициализируется через GetInstance


C>Далее останавливаем отладку (Shift+F5) и запускаем еще раз — SingleTest.st сразу же содержит значение. Из за чего так и как с этим бороться?



Так он же static!

Re[2]: непонятки с инициализацией переменных
От: Аноним  
Дата: 10.07.07 11:00
Оценка:
Здравствуйте, Дюша, Вы писали:

Д>Здравствуйте, Charlito, Вы писали:


C>>Имеем след. код


C>>
C>>public class SingleTest{    
C>>private static SingleTest st;    
C>>private SingleTest() { }    
C>>public static SingleTest GetInstance()    
C>>{        
C>>if (st == null) st = new SingleTest();        
C>>return st;    
C>>}
C>>}

C>>public partial class _Default : System.Web.UI.Page 
C>>{    
C>>private SingleTest st = SingleTest.GetInstance();    
C>>protected void Page_Load(object sender, EventArgs e)    {    }
C>>}
C>>




C>>Запускаем первый раз — SingleTest.st содержит null и соответственно инициализируется через GetInstance


C>>Далее останавливаем отладку (Shift+F5) и запускаем еще раз — SingleTest.st сразу же содержит значение. Из за чего так и как с этим бороться?



Д>Так он же static!



Ага, спасибо, разобрался...
Re[2]: непонятки с инициализацией переменных
От: Norad  
Дата: 10.07.07 11:09
Оценка:
Д>Так он же static!

Кстати, тоже интерестно, когда сбрасываются статик переменные?
Ведь, как я понял, остановка отладки выгрузила программу из памяти.
Re[3]: непонятки с инициализацией переменных
От: Borisan  
Дата: 10.07.07 13:06
Оценка: 1 (1)
Здравствуйте, Norad, Вы писали:


Д>>Так он же static!


N>Кстати, тоже интерестно, когда сбрасываются статик переменные?

N>Ведь, как я понял, остановка отладки выгрузила программу из памяти.

Ну как я понимаю, (кста тема топика затронула паттерн Singleton), было зупущено приложение веб?
Поэтому выгрузка не происходит при остановке веб-приложения (в 2005 студии проверно).
Re[4]: непонятки с инициализацией переменных
От: Norad  
Дата: 10.07.07 14:45
Оценка:
B>Ну как я понимаю, (кста тема топика затронула паттерн Singleton), было зупущено приложение веб?
B>Поэтому выгрузка не происходит при остановке веб-приложения (в 2005 студии проверно).

ага, торможу, действительно это aspnet форум
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.