2

我知道我可以通过做

float y = 4.5f;

我想做同样的事情,除了一个字节。我该怎么做呢?我检查了 MSDN 文档,找不到与此相关的任何内容。还有,这个叫什么?

谢谢,

[编辑]

为清楚起见,我使用的代码是

byte myByte = a==b?1:0;

我得到的错误是

无法将类型“int”隐式转换为“byte?”。存在显式转换(您是否缺少演员表?)

解决方案

byte myByte = (byte)(a==b?1:0);
4

5 回答 5

13

byte和数据类型没有指定的sbyte后缀shortushort但是,整数文字可以分配给这些数据类型的变量,并将被隐式转换,假设该值适合存储在变量中。只是为了记录,这里是 C# 中定义的文字:

uint: U or u
long: L or l
ulong: UL or ul
float: F or f
decimal: M or m
于 2009-05-25T16:44:12.483 回答
2

我只会使用演员表。

// Okay
Byte data = (Byte) 57;

// Error (but I don't know if it is a compiler error or a runtime error)
Byte data = (Byte) -17;

或者引入一个常数。

// Okay
const Byte foo = 57;
Byte data = foo;

// Compiler Error
const Byte foo = -17;
Byte data = foo;
于 2009-05-25T16:50:09.637 回答
2

根据这篇文章,字节没有这样的后缀。

于 2009-05-25T16:51:32.850 回答
2

定义字节时不需要后缀:

   byte b = 1;

你只需要确保你的值在 0 到 255 之间。

MSDN 提到使用 F 作为“后缀”,强制使用 Literal Type。

有关更多信息,请参阅C-sharp Online上的以下文章

于 2009-05-25T16:52:40.743 回答
1

十六进制表示法:

字节 b = 0xff;

于 2009-05-25T16:46:21.983 回答