WebClient.DownloadData, the spec contains a small sample. It is arguably more efficient to use WebRequest.GetResponseStream and save the data chunk by chunk, but you'll have to properly prepare the WebRequest yourself.
Updated
If you have to download 3-4GB files then you must do much much more than what the .Net framework offers. WebClient is immedeatly out-of-the-question since it returns the content as one monolithic byte[]. Even presuming that your VAS (virtual address space) has the contigous 4GB to burn on these downloads, .Net cannot alocate anything larger than 2Gb (on x64 as well). So you must use streams, as in GetResponseStream().
Second you must implement HTTP range units in your request, as per HTTP/1.1 section 3.12. Your request must contain Content-Range headers to be able to resume intrerupted downloads. And of course, your target server will have to accept and recognize these headers, and perhaps respond with a prpoer accept-ranges, which few servers do.
You have your plate full, downloading 4Gb is anything but trivial.