LINQ .Any
и средство доступа к элементу [0]
не связаны между собой настолько, что не были заключены контракты по кодам, чтобы считать их одним и тем же.Поскольку this.bar
в любом случае будет инициализироваться с использованием значения по умолчанию, лучше всего просто сделать это:
Contract.Requires(items != null);
this.bar = items.FirstOrDefault();
Это не только разрешит возможность обеспечения безопасности потоков, на которую указывает AakashM, но такженемного более производительный.Поскольку вы знаете, this
является коллекцией (и поэтому имеет .Count
), другой вариант будет:
if(this.Count > 0)
this.bar = this[0];