Jak napisać zawartość jednego strumienia do innego strumienia w .net?

Często napotykam na problem, że mam jeden strumień pełen danych i chcę napisać wszystko w innym strumieniu.

Wszystkie przykłady kodu tam używają bufora w postaci tablicy bajtów.

Czy jest na to bardziej elegancki sposób?

Jeśli nie, jaki jest idealny rozmiar bufora. Jakie czynniki składają się na tę wartość?