2011-11-04 3 views
36

Cách tạo một phiên bản System.IO.Stream stream. Một trong những hàm của tôi nhận được System.IO.Stream stream làm tham số và viết một số điều cho nó. Vì vậy, làm thế nào tôi có thể tạo một thể hiện mới của cùng và chuyển nó vào chức năng?Cách tạo một thể hiện của luồng System.IO.Stream

+3

Có. Đã nhận nó 'System.IO.Stream stream = new System.IO.MemoryStream();' – Rauf

Trả lời

66
System.IO.Stream stream = new System.IO.MemoryStream(); 
+2

Chúng ta phải gọi Đóng hoặc Vứt bỏ trên luồng "trống" đó? –

+2

Câu trả lời ngắn gọn: Có. Đối với câu trả lời dài hơn, hãy xem câu trả lời của John Skeet http://stackoverflow.com/a/234257/1480854 – Josh

19

Bạn phải tạo một phiên bản của một trong các lớp con. Stream là một lớp trừu tượng không thể được khởi tạo trực tiếp.

Có một loạt các lựa chọn nếu bạn nhìn vào phía dưới của tài liệu tham khảo ở đây:

Stream Class | Microsoft Developer Network

Phổ biến nhất có lẽ là FileStream hoặc MemoryStream. Về cơ bản, bạn cần phải quyết định nơi bạn muốn dữ liệu sao lưu luồng của bạn đến từ, sau đó tạo một thể hiện của lớp con thích hợp.

0

Luồng là lớp cơ sở, bạn cần phải tạo một trong các loại luồng cụ thể, chẳng hạn như MemoryStream.

4
Stream stream = MemoryStream(); 

bạn có thể sử dụng MemoryStream

-1

System.IO.Stream dòng là một lớp trừu tượng. Vui lòng tìm bài viết MSDN dưới đây.

http://msdn.microsoft.com/en-us/library/system.io.stream.aspx

Ví dụ mã sau tạo một thể hiện của StreamReader.

System.IO.Stream textStream = new System.IO.StreamReader(""); 

System.IO.Stream là lớp cơ sở của System.IO.StreamReader lớp (và thiết lập khác của các lớp học).

+0

Uhm, StreamReader KHÔNG phải là lớp dẫn xuất của luồng. StreamReader là một sáng tác trên Luồng. MemoryStream, FileStream, NetworkStream vv là các ví dụ về lớp Derived từ Stream. Kiểm tra System.IO Namespace. Ngoài ra, câu trả lời của bạn là chính xác :) – Polity

+0

Đây là một thất bại lớn, StreamReader không thể truyền sang luồng vì nó không phải là phân lớp – sam