📜  C#中的二进制字面量和数字分隔符

📅  最后修改于: 2021-05-29 13:34:13             🧑  作者: Mango

二进制字面量

固定值称为字面量。字面量是变量使用的值。在C#7.0之前可以使用六种类型的字面量,它们是整数浮点数字符字符串空值布尔字面量。在C#7.0中,添加了另一个字面量,即Binary 字面量 。二进制字面量用于将二进制值存储在变量中。二进制字面量用0b表示。二进制字面量主要用于位掩码。

例子:

var num = 0b10001

在这里,当编译器在变量值中看到0b时,它会自动将此num视为二进制字面量。如果尝试在C#7.0以下的编译器上运行此功能,则编译器将引发错误,因为此功能是C#7.0中引入的,因此,它将仅在C#7.0及更高版本的编译器上起作用。

例子:

// C# program to illustrate the 
// concept of binary literals.
using System;
  
class GFG {
  
    // Main method
    static public void Main()
    {
  
        // Creating binary literals 
        // by prefixing with 0b
        var num1 = 0b1001;
        var num2 = 0b01000011;
  
        Console.WriteLine("Value of Num1 is: " + num1);
        Console.WriteLine("Value of Num2 is: " + num2);
        Console.WriteLine("Char value of Num2 is: {0}",
                                 Convert.ToChar(num2));
    }
}
输出:
Value of Num1 is: 9
Value of Num2 is: 67
Char value of Num2 is: C

数字分隔符

C#7.0中引入了数字分隔符的概念。借助数字分隔符,您可以将大量数字分成小部分,从而使您的代码更具可读性。下划线( _ )用作数字分隔符。在代码中使用数字分隔符时,编译器将忽略它们,因此编译器不会在输出中输出数字分隔符,如下面的示例所示。

例子:

// C# program to illustrate the 
// concept of digit separators.
using System;
  
class GFG {
  
    // Main method
    static public void Main()
    {
  
        // Without Using digit separators
        long x = 100000022200000202;
        long z = 10000000020;
  
        Console.WriteLine("X: {0}", x);
        Console.WriteLine("Z: {0}", z);
  
        // Using digit separators
        long num1 = 1_00_10_00_00_00;
        var num2 = 0b_010_000_000_000_000_000_000_000_000;
        long num3 = 1_00_00_00_00_00_00;
        var num4 = 0b_1_1000_0000_1000_0000_0011_0000_0000_1000_0001;
  
        Console.WriteLine("Num1: {0}", num1);
        Console.WriteLine("Num2: {0}", num2);
        Console.WriteLine("Num3: {0}", num3);
        Console.WriteLine("Num4: {0}", num4);
    }
}
输出:
X: 100000022200000202
Z: 10000000020
Num1: 1000110000000000
Num2: 33554432
Num3: 1000000000000000000
Num4: 103213629569