C# 为什么新功能会出现;“二进制文字”;是否以0b开头而不是后缀?

C# 为什么新功能会出现;“二进制文字”;是否以0b开头而不是后缀?,c#,roslyn,c#-6.0,C#,Roslyn,C# 6.0,下一个C#版本计划(2014年4月)使用二进制文本,如图所示 该页面中的示例如下所示: 0b00000100 var myBynaryLiteral = 0b00000100; 因此,您可能会这样使用: 0b00000100 var myBynaryLiteral = 0b00000100; 我想了解为什么他们选择在这个前缀前面加上0b,而不是像double、float、decimal等那样在结尾使用字母 double a = 1d; float b = 1f; decimal c =

下一个C#版本计划(2014年4月)使用二进制文本,如图所示

该页面中的示例如下所示:

0b00000100
var myBynaryLiteral = 0b00000100;
因此,您可能会这样使用:

0b00000100
var myBynaryLiteral = 0b00000100;
我想了解为什么他们选择在这个前缀前面加上
0b
,而不是像
double
float
decimal
等那样在结尾使用字母

double a = 1d;
float b = 1f;
decimal c = 1m;

整数文本具有两种不同的属性:它们的类型(可以用后缀
L
UL
指定)和它们的半径(在中称为“形式”),它们可以用前缀(例如
0x
和现在的
0b
指定

指定类型总是通过后缀完成的,而指定基数总是通过前缀完成的,因此保持相同的约定是有意义的。此外,还可以组合这两个说明符

例如:

0b00101010UL

将表示文字
42
,存储为无符号长,以基数2表示。

后缀与类型相关(
f
m
),前缀与基数相关(
0b
0x
)。你能解释一下@FrédéricHamidi吗?从未使用过haxadecimal文本,但看起来这就是您所说的
0x
。这是一个实点。@Vitor:八进制是以8为基数,十六进制是以16为基数。(八进制过去相当普遍,但现在你看不到太多。)在十六进制中,你使用数字0-9,A代表10,B代表11,等等,直到F代表15。十六进制的优点是一个字节可以用两位数字表示(半字节或“nybble”用一位数字表示)。例如,
0x77
0111 0111
(或
0b01110111
)。当将开始生命的浮点表示为整数值时,这是如何工作的,即float val=0x0FF0f;-发现问题了吗假设Roslyn不允许浮点数表示为十六进制?@series0ne,这不仅仅是Roslyn,没有任何版本的C#允许您将
0x
前缀与整数文本以外的内容一起使用。首先不能将其应用于浮点文本。