好吧,我承认,这只是用来凑数的一篇文章,因为这个问题太简单了,但又因为最近有好几个同学在群中问到该问题,所以就出来了这么一篇。
回到正题--
string是引用类型,虽然在C#中把它当值变量一样用,但我们要知道,它的确是引用类型,只是它用的比较特别多,所以C#把它特殊处理了。
bool是值类型,其值只能是true与false。
如果非要将string类型转换为bool类型,那么也只能将"true"与"false"通过bool.Parse()或Convert.ToBoolean()来转换。换句话说,string字符串中除了"true"与"false",其它都不可以转换为bool类型,当然"true"与"false"不限大小写。
如下:
string str= "true";
bool b = bool.Parse(str);
bool c = Convert.ToBoolean(str);
都可以转换成功,但如果将其它字符串作同样转换,如
string str= "abc";
bool b = bool.Parse(str);
bool c = Convert.ToBoolean(str);
则会报错:
该字符串未被识别为有效的布尔值堆栈跟踪:
[FormatException:
该字符串未被识别为有效的布尔值。]
System.Boolean.Parse(String value) +7663730
System.Convert.ToBoolean(String value) +11
WebApplication3._Default.Page_Load(Object sender, EventArgs e) in E:\WebApplication3\WebApplication3\Default.aspx.cs:17
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
希望再有问这个问题的童鞋们,认真的学习一下C#基础。