Итак, я работал над Программой и был немного сбит с толку поведением Listoperator. У меня есть список, и я хотел знать, содержит ли он запись в соответствии с некоторыми критериями. Теперь давайте назовем его списком, и obj имеет следующие свойства:
public string PropA { get; set; }
public string PropB { get; set; }
public string PropC { get; set; }
public bool HasPropC { get; set; }
Теперь мне нужен был только истинный результат, если PropA был равен единице в списке, и если свойство в списке имеет значение PropC, оно должно проверять PropC, иначе PropB. Я использовал этот фрагмент кода для этого:
if (List.Exists(x => {
bool b = true;
b = b && x.PropA.Equals(obj.PropA);
b = b && x.HasPropC ? x.PropC.Equals(obj.PropC) : x.PropB.Equals(obj.PropB);
return b;
}))
После первой строки с "PropA.Equals..." b было установлено значение false. Но линия за пределами снова сделала это правдой. Таким образом, казалось, что Объект был, даже если его не было. Я нашел решение для этого, я заключил вторую строку после &&-оператора в скобки, но я до сих пор не знаю, почему из false он превратился в истину.
Можете ли вы дать мне подсказку по этому поводу?
Спасибо.