zoukankan      html  css  js  c++  java
  • Convert.ToBoolen(int) 方法 love

      刚刚写行代码,傻到
    DBAccess.GetCustomerID(del) = 0 ? MessageBox.Show("用户" + txtName.Text.Trim() + "删除成功") : MessageBox.Show("用户" + txtName.Text.Trim() + "删除失败");

    的直接用下面的代码,编译的时候报错说:Error 1 Constant value '0' cannot be converted to a 'bool' D:\Users\Nokia\Documents\Visual Studio 2008\Projects\HJSTEEL\HJSTEEL\AddCustomerForm.cs 199 43 HJSTEEL

    很不理解,于是和两哥们讨论了一下,他们给的方案是强制转换,结果同样报错。(杯具啊,三个写代码的居然连这点基础知识都忘记了);

    于是,发现下面这样是可以的。

    int a = 1;
    bool b = Convert.ToBoolean(a);
    Console.WriteLine(b);

    但是很好奇Convert.ToBoolean()方法到底是怎么实现的,它有多个重载,string啊,object啊等等。于是使用IL DASM以为能看到点东西,结果只看到下面这些,也是直接调用Convet方法的。

    .method private hidebysig instance void  Test() cil managed
    {
      // Code size       18 (0x12)
      .maxstack  1
      .locals init ([0] int32 a,
               [1bool b)
      IL_0000:  nop
      IL_0001:  ldc.i4.1
      IL_0002:  stloc.0
      IL_0003:  ldloc.0
      IL_0004:  call       bool [mscorlib]System.Convert::ToBoolean(int32)
      IL_0009:  stloc.1
      IL_000a:  ldloc.1
      IL_000b:  call       void [mscorlib]System.Console::WriteLine(bool)
      IL_0010:  nop
      IL_0011:  ret
    // end of method Program::Test

    好吧,还是用Reflactor,直接上代码:

    public static bool ToBoolean(int value)
    {
        return (value != 0);
    }

     

     

    唉,原来Convert.ToBoolean(int value)的实现也就是比较啊。

    虽然小题大做,但是弄明白弄清楚了。

  • 相关阅读:
    使用 MongoDB 存储商品分类信息
    什么鬼!基于备份恢复的实例数据还能变多?
    MongoDB账号管理及实践
    TiDB和MongoDB分片集群架构比较
    MongoDB复制集与Raft协议异同点分析
    MongoDB安全事件的防范与反思
    [翻译]pytest测试框架(二):使用
    浏览器渲染原理及解剖浏览器内部工作原理
    html实现鼠标悬停变成手型实现方式
    用ul li实现边框重合并附带鼠标经过效果
  • 原文地址:https://www.cnblogs.com/windbg/p/2224530.html
Copyright © 2011-2022 走看看