Convert.ToBoolen(int) 方法

  刚刚写行代码,傻到
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)的实现也就是比较啊。

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

转载于:https://www.cnblogs.com/windbg/archive/2011/10/25/2224530.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值