Учитывая BehaviorSubject, каково практическое различие между вызовом всех этих различных функций на нем?
Принятие меня понимает это правильный, они должны все сделать о том же самом, учитывая BehaviorSubject.
Если так, затем какой вызов является самым соответствующим (которым я имею в виду: который лучше всего передает мое намерение)? Первый или Единственный, возможно?
В противном случае затем, каковы практические различия?
First, Last и Single блокируют; рекомендуется вместо них использовать Take(1), чтобы получить обратно IObservable. При цепочке операторов запросов рекомендуется избегать First, Last и Single, потому что вы выходите из безопасности монады... то есть у вас появляются блокирующие побочные эффекты. Подробнее об этом смотрите http://blogs.msdn.com/jeffva/archive/2009/12/09/first-last-contains-etc-can-be-extremely-dangerous-yet-extremely-useful.aspx.
MostRecentValue и LatestValue были удалены из последней версии Rx, потому что они также блокируют, поэтому единственными блокирующими операторами остались First, Last и Single (и варианты xxxOrDefault), согласно последним заметкам к выпуску.
MostRecent будет возвращать последнее выбранное значение, как часто вы его вызываете (и он принимает initialValue, чтобы гарантировать, что он никогда не будет ждать), т.е. "без потребления", в то время как Latest будет ждать, пока не придет значение, а затем вернет его "с потреблением" - т.е. если вы снова вызовете Latest, он не вернет то же значение, что и при последнем вызове, он будет ждать, пока не придет следующее значение, если вообще придет.