C#代码中用UL 0B 0X等前后缀表示数字

代码中不同的数值表示法官方文档都有,但这东西不常用,要用时又要专门翻下文档,所以整个博客记录整理一下

数字表示

官方文档-整数:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/integral-numeric-types
官方文档-浮点:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types#code-try-3

int a1=1;						//1
int a2=0xFF;					//255
int a3=0b_1111_1111;			//255

long l1=1L;						//1
ulong ul1=10_10UL;				//1010

double d1=10_10D;				//1010.00
double d1=10_10.10_10D;			//1010.1010

float f1=10_10F;				//1010.0
float f1=10_10.10_10F;			//1010.1010

decimal dm1=10_10M;				//1010.00
decimal dm2=10_10.10_10M;		//1010.1010

总结

  • 前缀后缀都不区分大小写,且一般用大写,避免和其它字符搞混。
  • 前缀0x:16进制表示法,可以用_分割,可以用在各种类型上面。但需要注意类型问题,比如 int a=0xFF_FF_FF_FF会提示类型错误。
  • 前缀0b:2进制表示法,可以用_分割,可以用在各种类型上面。
  • 整数文本因为是16进制或2进制表示,这2种方式本身是没有正负号概念的,会解析为正值。比如文本 0xFF_FF_FF_FFuint 类型中表示数字 4294967295,在int类型中表示数字-1
  • 后缀U:表示uint或ulong。
  • 后缀L:表示long或ulong,一般用大写,用小写容易和数字1搞混。
  • 后缀UL:后缀U和后缀L的组合。
  • 后缀D:表示double
  • 后缀F:表示float
  • 后缀M:表示decimal

枚举

官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/enum

枚举支持在类型上面写文件,所以可以使用下面这种方式使用flags

    [Flags]
    public enum PermissionType : uint
    {
        ALL = 0xFF_FF_FF_FF,
        Read = 0b_00_01,
        Write = 0b_00_10,
        Execute = 0b_01_00,
        
        ReadWrite = Read | Write,
        ReadExecute = Read | Execute
    }

第一个ALL0x方式写16进制:我习惯性枚举写一个默认值,可能是None或是ALL。这里写ALL时需要保证他的所有2进制位为1,用0x直接表示比较方便,同时需要替换上面的类型为uint,默认的int原生不支持这种写法,需要替换为unchecked((int)0xFF_FF_FF_FF)就不太美观。

这种方式书写Flags的枚举,避免了以前口算1,2,4,8..的麻烦,就算你心算强大,当枚举项比较多的时候就不那么容易计算了(你一口气算算2^14=?)。现在这种写法直接让你书写2进制,需要增加时进位就行了,非常方便!

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值