Значения по умолчанию для параметров метода должны быть константами времени компиляции, поскольку значения по умолчанию фактически копируются компилятором во все сайты вызовов метода.
Вы должны использовать перегрузку, чтобы сделать это:
public bool Broadcast(byte command, MemoryStream data, bool async) {
return Broadcast(command, data, async, t => true);
}
public bool Broadcast(byte command, MemoryStream data, bool async, Func<T, bool> predicate) {
// ...
}
Кроме того, в mscorlib есть специальный Predicate<T>
делегат, который вы можете использовать вместо него. Это та же подпись, что и Func<T, bool>
, но она явно помечает ее как делегат, который решает, будет ли выполнено действие с экземплярами T