В общем, имеются в программе события, одно из них-CollectionCountChanged, которое генерируется функцией OnCollectionCountChanged:
public void OnCollectionCountChanged(object source, CollectionEventHandlerArgs args)
{
if (CollectionCountChanged != null) CollectionCountChanged(source, args);
}
Visual Studio предлагает упростить вызов делегата:
public void OnCollectionCountChanged(object source, CollectionEventHandlerArgs args)
{
CollectionCountChanged?.Invoke(source, args);
}
Кто-то может объяснить, что делает эта шляпа? Ну или конкретно, что здесь делает "?". Благодарю заранее :)
CollectionCountChanged?.Invoke(source, args);
Такая конструкция эквивалентна следующей:
if(CollectionCountChanged != null)
{
CollectionCountChanged.Invoke(source, args);
}
Бывает особенно удобно, когда через точку много сущностей перечислено, чтобы не проверять каждую из них на null по очереди:
LevelOne?.LevelTwo?.LevelThree?...
Продвижение своими сайтами как стратегия роста и независимости