Допустим у меня есть несколько объектов класса, которые содержат в себе по таймеру на события которого подписаны и обработчики этого события. Могут ли они каким-то магическим образом друг на друга повлиять (типа один класс выполнял код обработчика и в это время другой элемент вызвал этот код только содержащийся в нем и соответственно настроил его под себя, а первый этого не знал и продолжил выполняться с измененными данными) внутри кода обработчика сработав почти одновременно?
Неявное влияние элементов обычно не очень хорошо, но возможно. Как простейший пример,
у нас есть менеджер для состояния
public class StateManager
{
public event EventHandler<int> StateShaged;
public void OnStateChanged(int newState)
{
this.StateShaged?.Invoke(this, newState);
}
}
Каждый элемент массива может быть таким:
public class ValueHolder
{
StateManager _manager;
public ValueHolder(StateManager manager)
{
_manager = manager;
_manager.StateShaged += (sender, args) =>
{
this.Value = args;
};
}
public void Boom()
{
_manager.OnStateChanged(15);
}
public int Value{get;set;}
}
и сам код работы с этой красотой
var manager = new StateManager();
var array = Enumerable.Range(0, 5)
.Select(x => new ValueHolder(manager) {Value = x})
.ToArray();
foreach(var item in array) Console.WriteLine(item.Value);
array[0].Boom();
foreach(var item in array) Console.WriteLine(item.Value);
вывод в консоль
0
1
2
3
4
15
15
15
15
15
Как видите, напрямую каждый элемент не вызывает другой элемент, но взаимодействие происходит неявно.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости