C#表达式Convert.ToBoolean(-2)的值是?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#表达式Convert.ToBoolean(-2)的值是?相关的知识,希望对你有一定的参考价值。
C#表达式Convert.ToBoolean(-2)的值是?
这个怎么算的呢?有大神知道一下吗?
请先给出明确答复:True
解释原因:
- 对于 Convert.ToBoolean(Int32) 假如值为非零值,则为true; 假如值为零,则为false。
有无解决办法:记住0是false,其他都为true就行了。
参考技术B C#核心开发-第4单元-运算符和表达式-第10节:强制转换软糖的回答您满意吗,请及时采纳。
一都编程-C#核心开发
强制转换
在C#中,强制转换使用的比较多,并且还可以跨数据类型转换,甚至可以在值类型和引用类型之间转换。
强制类型转换需要借助于工具,不能直接使用赋值号实现转换。
常用的C#强制转换工具有:Convert.Toxxx()方法、()、ToString()、Parse()等。
1. Convert.Toxxx()方法
使用C#中的Convert.Toxxx()来实现基本数据类型强制类型转换。使用强制类型转换就可以实现值类型值的逆转,如将大范围的值转换为小范围的值。
Convert.Toxxx()方法具有许多个重载,可通过“转到定义”查看:
图1
在图1中,当我们在Visual Studio 2019中打出来Convert时,查看一下提示信息,这是一个使用class定义的引用类型,是一个类。
然后再将光标放上去,右击:
图2
在图2中点击“转到定义”,如图3所示:
图3
图3是微软在.NET类库中为我们定义的重载方法,方法很多,我们只需要使用时,打上圆点,就会自动出来,供我们选择:
图4
在图4中,是将C#中的Int32类型转换为Int16类型,这里使用的是.NET的对应类型,short对应Int16,int对应Int32。
2. 案例实战
图5
在图5中,已经强制将short类型的值转换为int类型的值。
再如,将数字转换为字符串:
图6
图6使用了C#中的Convert类的Toxxx()方法,非常容易地实现各种类型之间的转换,其功能非常强大。 参考技术C C#核心开发-第4单元-运算符和表达式-第10节:强制转换
一都编程-C#核心开发
强制转换
在C#中,强制转换使用的比较多,并且还可以跨数据类型转换,甚至可以在值类型和引用类型之间转换。
强制类型转换需要借助于工具,不能直接使用赋值号实现转换。
常用的C#强制转换工具有:Convert.Toxxx()方法、()、ToString()、Parse()等。
1. Convert.Toxxx()方法
使用C#中的Convert.Toxxx()来实现基本数据类型强制类型转换。使用强制类型转换就可以实现值类型值的逆转,如将大范围的值转换为小范围的值。
Convert.Toxxx()方法具有许多个重载,可通过“转到定义”查看:
图1
在图1中,当我们在Visual Studio 2019中打出来Convert时,查看一下提示信息,这是一个使用class定义的引用类型,是一个类。
然后再将光标放上去,右击:
图2
在图2中点击“转到定义”,如图3所示:
图3
图3是微软在.NET类库中为我们定义的重载方法,方法很多,我们只需要使用时,打上圆点,就会自动出来,供我们选择:
图4
在图4中,是将C#中的Int32类型转换为Int16类型,这里使用的是.NET的对应类型,short对应Int16,int对应Int32。
2. 案例实战
图5
在图5中,已经强制将short类型的值转换为int类型的值。
再如,将数字转换为字符串:
图6
图6使用了C#中的Convert类的Toxxx()方法,非常容易地实现各种类型之间的转换,其功能非常强大。 参考技术D Convert 将一个基本数据类型转化为另一基本数据类型。
支持的转化类型:受支持的基类型是Boolean、Char、SByte、Byte、Int16、Int32、Int64、UInt16、UInt32、UInt64、Single、Double、Decimal、DateTime 和 String。
使用实例:
double dNumber = 23.15;
try
// Returns 23
int iNumber = System.Convert.ToInt32(dNumber);
catch (System.OverflowException)
System.Console.WriteLine(
"Overflow in double to int conversion.");
// Returns True
bool bNumber = System.Convert.ToBoolean(dNumber);
// Returns "23.15"
string strNumber = System.Convert.ToString(dNumber);
try
// Returns '2'
char chrNumber = System.Convert.ToChar(strNumber[0]);
catch (System.ArgumentNullException)
System.Console.WriteLine("String is null");
catch (System.FormatException)
System.Console.WriteLine("String length is greater than 1.");
// System.Console.ReadLine() returns a string and it
// must be converted.
int newInteger = 0;
try
System.Console.WriteLine("Enter an integer:");
newInteger = System.Convert.ToInt32(
System.Console.ReadLine());
catch (System.ArgumentNullException)
System.Console.WriteLine("String is null.");
catch (System.FormatException)
System.Console.WriteLine("String does not consist of an " +
"optional sign followed by a series of digits.");
catch (System.OverflowException)
System.Console.WriteLine(
"Overflow in string to int conversion.");
System.Console.WriteLine("Your integer as a double is 0",
System.Convert.ToDouble(newInteger));
关于System.Convert那些事
关于System.Convert那些事
前言
不知咋的,今天腰疼的不行,疼的站不起来了,今下午突然就疼起来了,唉,这是身体要垮了的节奏啊,再加上自己的VAX试用期到了,弄了半天也不行,烦.
正文
看到过一个这种代码:
bool?obj=从server返回来的值,可能为null.
if(obj!=null&&Convert.ToBoolean(obj)==true) { //code }
上面的代码非常清楚,先推断obj是不是null,假设不是null的话,再调用Convert.ToBoolean方法,推断是不是true.
上面的方法没有不论什么问题,可是有一点要确认的是,obj!=null这句话须要推断吗?
于是有了以下的代码
static void Test() { Type t = typeof(Convert); var methods = t.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); foreach (var method in methods) { if (!method.Name.StartsWith("To")) { continue; } var paras = method.GetParameters(); if (paras.Length==1&¶s[0].ParameterType==typeof(object)) { object result; try { result = method.Invoke(null, new object[] { null }); } catch (Exception) { Console.WriteLine("{0}:{1}",method.Name,"转换null失败"); continue; } Console.WriteLine("{0}:转换后的值为 {1}",method.Name,result==null?"null" :(result.ToString().Equals(string.Empty))?"空字符串":(result is char)?"空字符":result); } } }
能够看到,method.Invoke(null,new object[]{null})
刻意的为ToXXX方法传递null值.
结果是这种呢?
输出例如以下:
ToBoolean:转换后的值为 False ToChar:转换后的值为 空字符 ToSByte:转换后的值为 0 ToByte:转换后的值为 0 ToInt16:转换后的值为 0 ToUInt16:转换后的值为 0 ToInt32:转换后的值为 0 ToUInt32:转换后的值为 0 ToInt64:转换后的值为 0 ToUInt64:转换后的值为 0 ToSingle:转换后的值为 0 ToDouble:转换后的值为 0 ToDecimal:转换后的值为 0 ToDateTime:转换后的值为 0001/1/1 0:00:00 ToString:转换后的值为 空字符串
从而证明了,对Convert的ToXXX方法传递null值是不会抛出异常的,而且不返回默认的值.
比如int : 0 ,string : “” ,char :’\0’ , bool : false
有了上面这个几轮有声没用处呢?
这代表了上面的代码能够简化为
if(Convert.ToBoolean(obj)) { //code }
顺道提一下
这种代码会抛出异常:
Convert.ToChar(null);
可是这种代码不会抛出异常:
object obj = null; Convert.ToChar(obj);//返回’\0’空字符
出现上述的原因是啥呢?
Convert.ToChar(null)在内部实际调用的是Convert.ToChar(null,null),然而ToChar(null,,null)的实现例如以下:
if (value == null){ throw new ArgumentNullException("value");} if (value.Length != 1){ throw new FormatException(Environment.GetResourceString("Format_NeedSingleChar"));} return value[0];
所以直接传递null值会抛出异常.
以上是关于C#表达式Convert.ToBoolean(-2)的值是?的主要内容,如果未能解决你的问题,请参考以下文章
Convert.ToBoolean(string) 和 Boolean.Parse(string) 有啥区别?