Được gọi là chuỗi "độ dài cố định". Không có một tương đương chính xác trong VB.NET.
Sửa: Vâng, OK, có VBFixedStringAttribute, nhưng tôi khá chắc chắn rằng tồn tại duy nhất để công cụ chuyển đổi tự động có thể dễ dàng hơn chuyển đổi mã VB6 để VB.NET cho bạn, và nó không thực sự "Cách .NET" để làm việc. Ngoài ra, hãy xem các cảnh báo trong bài viết để biết chi tiết về lý do tại sao điều này vẫn không chính xác giống như một chuỗi có độ dài cố định trong VB6.
Thông thường, các chuỗi dài cố định chỉ được sử dụng trong VB6 nếu bạn đang đọc bản ghi kích thước cố định từ tệp hoặc qua mạng (ví dụ: phân tích cú pháp tiêu đề trong khung giao thức). Ví dụ, bạn có thể có một tệp chứa một tập hợp các bản ghi có độ dài cố định tất cả đều có định dạng (số nguyên, 1 ký tự-chuỗi, đôi), mà bạn có thể đại diện trong VB6 với tư cách người dùng- định nghĩa loại:
Public Type Record
anInteger As Integer
aSingleCharacter As String * 1
aDouble As Double
End Type
Bằng cách này, mã VB6 mà đọc từ tập tin có chứa các bản ghi trong định dạng này có thể đọc từng cố định kích thước kỷ lục lưu trữ trong tập tin, và đặc biệt, nó sẽ chỉ đọc 1 byte cho aSingleCharacter
. Nếu không có * 1
, VB6 sẽ không biết có bao nhiêu ký tự để đọc từ tệp, vì một số String
thường có thể có bất kỳ số ký tự nào.
Trong VB.NET, bạn có thể làm một trong những điều sau đây, tùy thuộc vào nhu cầu của bạn:
Nếu những vấn đề thời gian (tức là bạn cần phải đọc chính xác một byte từ một số nguồn dữ liệu, ví dụ) xem xét sử dụng một mảng thay vào đó, chẳng hạn như
Dim aSingleByteArray(1) As Byte
Ngoài ra, bạn có thể sử dụng một trong những Stream lớp. Cụ thể, nếu bạn đang đọc dữ liệu từ ổ cắm mạng hoặc tệp, hãy xem xét sử dụng NetworkStream hoặc FileStream tương ứng. A Luồng có nghĩa là truy cập byte-byte (tức là truy cập nhị phân nguyên). StreamReader là một lớp liên quan giúp đơn giản hóa dữ liệu đọc khi nó dựa trên văn bản, do đó có thể tốt nếu bạn đang đọc tệp văn bản chẳng hạn. Nếu không (nếu xử lý dữ liệu nhị phân), hãy liên kết với một trong các lớp Luồng.
Nếu độ dài không quan trọng, bạn chỉ có thể sử dụng "bình thường" String
.Đó là để nói:
Dim aNormalString As String
nào câu trả lời là "đúng" thực sự phụ thuộc vào lý do tại sao nó được tuyên bố như vậy trong các mã VB6 gốc.
Nguồn
2012-03-06 07:04:17
Những gì bạn có ở đó là chuỗi có độ dài cố định. Làm thế nào để khai báo một trong VB.NET được thảo luận [ở đây] (http://stackoverflow.com/questions/2305377/how-to-declare-a-fixed-length-string-in-vb-net). –
@Jay: Tôi cũng thấy điều đó, nhưng cá nhân tôi sẽ né tránh ** VBFixedStringAttribute **. Đó là một trong nhiều thứ trong không gian tên ** Microsoft.VisualBasic ** đã được chuyển từ VB6 sang VB.NET dễ dàng hơn khi .NET xuất hiện lần đầu tiên, nhưng IMHO hầu như luôn tránh được hầu hết công cụ trong không gian tên đó và lựa chọn chức năng .NET Framework "chuẩn" tương đương thay thế. Ý tôi là, họ thậm chí còn giữ mô hình xử lý lỗi VB6 cũ với 'Lỗi Trên',' Goto' và 'Tiếp tục', mặc dù ngoại lệ là cách dự định (và mạnh hơn) để xử lý các lỗi trong mã .NET ;-) –
@ Mike - Tôi đã không thực sự nhìn vào lớp VBFixedStringAttribute để xác định nếu sử dụng nó là một ý tưởng tồi hay không, nhưng tôi tin rằng câu hỏi này là một dupe của một trong những tôi liên kết với. Tôi cũng nghĩ rằng câu trả lời của bạn tốt hơn câu trả lời ở đó, vì vậy +1 cho bạn. (và tất nhiên tôi đồng ý với bạn rằng việc sử dụng kiểu xử lý lỗi VB6 cũ là sự lựa chọn kém trong một ứng dụng VB.NET!) –