2008-09-30 44 views
7

Trong C và C++, bạn có thể nói với trình biên dịch rằng một số là một 'dài' bằng cách đặt 'l' ở cuối số. ví dụ: dài x = 0l;Làm thế nào để đúc một số vào một byte?

Làm thế nào tôi có thể nói trình biên dịch C# rằng một số là một byte?

+0

Tôi thích câu trả lời, nhưng đang đúc số đó thành một byte? – Robert

Trả lời

9

Theo C# language specification không có cách nào để xác định một byte chữ. Bạn sẽ phải bỏ xuống byte để nhận byte. Đặt cược tốt nhất của bạn có lẽ là để chỉ định trong hex và bỏ xuống, như thế này:

byte b = (byte) 0x10; 
+2

Là '(byte)' đúc một "no-op"? Hoặc đúng là ít nhất * một thời gian * cần thiết? – Pacerier

9
byte b = (byte) 123; 

mặc dù

byte b = 123; 

làm điều tương tự. Nếu bạn có một biến:

int a = 42; 
byte b = (byte) a; 
+0

chữ số nguyên sẽ được chuyển đổi hoàn toàn từ int sang byte, do đó bạn không cần phải đặt (byte) truyền trước số. Trong trường hợp một số người đã bỏ lỡ logic cho ví dụ trên. –

4

Hãy nhớ rằng, nếu bạn làm:

byte b = (byte)300; 

nó sẽ không làm việc theo cách bạn mong đợi.

+5

Sự thật của tuyên bố đó phụ thuộc vào kỳ vọng của tôi ;-) – phoog

+3

@casademora giải thích về điều đó, như kết quả sẽ là gì? – Pacerier

+0

Một byte chỉ có thể lưu trữ các số từ 0 đến 255 (1111 1111 = 255). Số này không thể được lưu trữ trong một byte, do đó, nó sẽ được "cắt ngắn" thành một byte. –

1

MSDN sử dụng implicit conversion. Tôi không nhìn thấy một byte type suffix, nhưng bạn có thể sử dụng một diễn viên rõ ràng. Tôi chỉ sử dụng hằng số thập lục phân 2 chữ số (int).

1

Không cần phải thông báo cho trình biên dịch. Bạn có thể gán bất kỳ giá trị hợp lệ nào cho biến byte và trình biên dịch là tốt với nó: không có hậu tố cho byte.

Nếu bạn muốn lưu trữ một byte trong một đối tượng bạn phải đúc:

object someValue = (byte) 123; 
Các vấn đề liên quan