Если я определил этот класс как часть приложения в ASP.NET 2.0:
public class Foo
{
private static int _seed = 100;
private static object myLock = new object();
public Foo()
{
lock (myLock)
{
this.MyInt = _seed;
_seed++;
}
}
public int MyInt {get; set;}
}
(Изменить: обновлен с учетом проблем безопасности потоков, как указано в ответах)
Как поведет себя этот статический член?Будет ли он начинаться с 100 и будет увеличиваться отдельно для каждого сеанса или будет увеличиваться отдельно для каждого обновления страницы, или это глобально ...?
Примечание. Я спрашиваю об этом, потому что использую классы дляВпервые я смоделировал данные в моем приложении ASP.NET, и я уже обнаружил, что характер ссылок в C # по-видимому игнорируется сериализацией ViewState, поэтому я хочу знать, какие еще странности я могу ожидать.Например, если у меня определен этот класс (предположим, Bar
- это другой класс):
public class OtherFoo
{
public List<Bar> Bars {get; set;}
}
, и я делаю это на своей странице:
OtherFoo _myFoo = new OtherFoo();
//Code here to instantiate the list member and add some instances of Bar
Bar b = _myFoo.Bars[0];
ViewState["myFoo"] = _myFoo; //Assume both are [Serializable]
ViewState["myBar"] = b;
Когда я получу ихViewState при следующей обратной передаче, b
и _myFoo.Bars[0]
больше не являются одним и тем же объектом.