Я где-то нашел реализацию оператора объединения NULL '??' в C#:
implicit def coalescingOperator[T](pred: T) = new {
def ??[A >: T](alt: =>A) = if (pred == null) alt else pred
}
Затем его можно использовать как a ?? b
что означает if (a == null) b else a
.
И после декомпиляции файлов классов я увидел, что он производит код с отражением (в Scala 2.8.1).
Почему он генерирует отражение и можно ли изменить этот код, чтобы он не генерировал отражение?