2008-10-31 32 views
23

Chỉ cần tò mò:Hậu tố (ký tự kiểu) cho hằng số số "Byte" trong VB.NET là gì?

Tôi biết tôi có thể cho trình biên dịch biết nếu tôi muốn giá trị được hiểu là một loại số nhất định, ví dụ: như Integer (32 bit đã ký), cách này phụ thêm một chữ "I" (loại ký tự) với giá trị liên tục:

Private Function GetTheAnswerAsInteger() As Integer 

    Return 42I 

End Function 

Ngoài ra còn có "S" cho ngắn, "D" cho Decimal vv

Nhưng hậu tố cho Byte là gì? Gợi ý: nó không phải là một rõ ràng "B" ...

Trả lời

30

Không có. Nếu bạn cần phân biệt giữa số nguyên và byte (ví dụ: để gọi quá tải thích hợp) cho một hằng số, bạn cần truyền.

(Điều này cũng đúng trong C#, bằng cách này.)

MSDN provides confirmation:

Byte không có nhân vật loại đen hoặc loại nhận dạng nhân vật.

Ngoài ra còn có list of type characters and literal suffixes.

+11

Ít nghèo Byte, thậm chí không có một loại chữ ký tự ... ;-) – splattne

+0

Đối với người dùng C# phần này của đặc điểm kỹ thuật hiển thị các tùy chọn khác nhau. http://msdn.microsoft.com/en-us/library/aa664674%28VS.71%29.aspx – AverageAdam

+0

@JonSkeet - Lưu ý các câu trả lời khác ở đây về việc bổ sung Roslyn của 'SB' &' UB' vào năm 2015, tại sao tôi vẫn không thể sử dụng chúng trong VB của tôi (VS 2017)? Tôi có cần điều chỉnh một số cài đặt không? – Toby

3

Không có byte byte trong .NET.

+0

Hiện tại (mỗi https://roslyn.codeplex.com/discussions/542111) –

5

Câu trả lời này không thực sự cung cấp hậu tố, nhưng nó gần như được.

Nếu bạn xác định một phương pháp khuyến nông như

Imports System.Runtime.CompilerServices 

Module IntegerExtensions 

    <Extension()> _ 
    Public Function B(ByVal iNumber As Integer) As Byte 
     Return Convert.ToByte(iNumber) 
    End Function 

End Module 

Bạn có thể sử dụng nó như thế này:

Private Function GetTheAnswerAsByte() As Byte 

    Return 42.B 

End Function 
+1

+1. Mặc dù điều này có thể sẽ không hoạt động bên trong phần hằng số. – Neolisk

6

Vì vậy, chúng tôi đã thêm chữ nhị phân trong VB mùa thu năm ngoái và nhận được phản hồi tương tự từ những người thử nghiệm ban đầu. Chúng tôi đã quyết định thêm một hậu tố cho byte cho VB. Chúng tôi giải quyết trên SB (cho byte đã ký) và UB (cho byte chưa ký). Lý do nó không chỉ là B và SB là hai lần.

Một, hậu tố B không rõ ràng nếu bạn viết dưới dạng thập lục phân (số có nghĩa là 0xFFB?) Và thậm chí nếu chúng tôi có giải pháp cho điều đó, hoặc một ký tự khác là 'B' ('Y') , F # sử dụng điều này) không ai có thể nhớ mặc định đã được ký hoặc chưa ký - .NET byte là không được ký theo mặc định nên sẽ có ý nghĩa khi chọn B và SB nhưng tất cả các hậu tố khác được ký theo mặc định để nhất quán với các hậu tố loại khác để chọn B và UB. Cuối cùng, chúng tôi đã truy cập SB và UB rõ ràng. - Anthony D. Green,

https://roslyn.codeplex.com/discussions/542111

Nó đã được tích hợp vào VB sắp tới.NET phát hành, và đây là cách nó sẽ làm việc:

Public Const MyByte As Byte = 4UB; 
Public Const MyByte2 As SByte = 4SB; 
Các vấn đề liên quan