в чем причина ??
Потому что все, что не является частным, означает, что его можно использовать извне, чтобы заблокировать кто-то другой или какой-то код, находящийся вне вашего контроляприводя к тупикам.
Рекомендуется блокировать частные статические переменные, например:
private static object _syncRoot = new object();
, а затем:
lock(_syncRoot)
{
...
}
частные переменные экземпляра также могут быть опасными, посколькуэкземпляр вашего класса не является чем-то, что вы как разработчик класса владеете.Это пользователь класса, которому принадлежит экземпляр.