c#基础入门(3)——异常、三元表达式、转义符、类型转换
2016-07-27 08:42
537 查看
异常
try{}catch(Exception ex){},try-catch之间不能有任何代码;当try-catch在循环结构中时,发生异常不会跳出循环结构;
方法A中调用了方法B,如果B中抛出了异常但是B中没有异常处理机制,就会把异常交给父方法A处理,如果A中也没有异常处理机制,那就会交给Main方法处理,直到抛出系统异常。
try { string strNull = null; int a = strNull.Length; } int b=10;//会报错,编译根本不能通过 catch (Exception ex) { string msg = ex.Message; }
循环中抛出异常时代码如下:
//for循环中抛出异常不跳出循环体 for (int i = 0; i < 6; i++) { try { string strNull = null; int a = strNull.Length; } catch (Exception ex) { string msg = ex.Message; } } //while循环中抛出异常不跳出循环体 while (true) { try { string strNull = null; int a = strNull.Length; } catch (Exception ex) { string msg = ex.Message; } }
如果想知道代码是否抛出过异常,可以在catch中加一个bool类型变量来判断,代码如下:
bool flag = false; try { string strNull = null; int a = strNull.Length; } catch (Exception ex) { flag = true; string msg = ex.Message; } if (flag) { Console.WriteLine("代码抛出了异常"); }
三元表达式
三元表达式可以用来替换if(){}else{}if(type=="guoguo") { name="蝈蝈"; } else { name="其他"; } //用三元表达式写法如下 name = type=="guoguo"?"蝈蝈":"其他"; //解释:首先判断type=="guoguo"是否成立,若成立则返回":"前边的项“蝈蝈”, //此时name="蝈蝈";否则返回":"后边的项“其他”,此时name="其他";
如果判断条件为“是否为null”的话可以进一步简化
if(test==null) { result="test为null"; } else { result=test; } //三元表达式写法 result=test==null?"test为null":test; //进一步简化 string test1 = null; string result = test1 ?? "test1为null"; //输出result=test1为null Console.WriteLine("result=" + result); string test2 = ""; result = test2 ?? "test2为null"; //输出result=,输出结果不同说明""跟null是完全不同的 Console.WriteLine("result=" + result);
转义符
\转义符:·一种特殊的字符常量;
·以反斜线”\”开头,后跟一个或几个字符。
·主要用来表示那些用一般字符不便于表示的控制代码。
·它的作用是消除紧随其后的字符的原有含义
·用一些普通字符的组合来代替一些特殊字符,由于其组合改变了原来字符表示的含义,因此称为“转义”
\' 单引号符 \" 双引号符 \\ 反斜线符"\" \0 空字符(Null) \a 鸣铃 \b 退格 \f 走纸换页 \r 回车 \n 换行 \t 横向跳到下一制表位置 \v 竖向跳格(垂直制表) \u 表示后面的内容是Unicode编码
char c = ‘\u4e2d’;C#和Java都输出“中”,表示4e2d是文字“中”的Unicode编码。
@转义符:
@符号可以转义多个反斜线,实例代码如下:
string particular2="c:\\g\\music\\beyond"; string particular3 = @"c:\g\music\beyond"; //输出particular=c:\g\music\beyond Console.WriteLine("particular2=" + particular2); //输出particular=c:\g\music\beyond Console.WriteLine("particular3=" + particular3);
类型转换
1、类型兼容隐式转换:
int iNum=12; float fNum=iNum;//此处属于隐式转换,并且转换成功 float fNum=12.3f; int iNum=fNum;//隐式转换失败
强制类型转换:
float fNum=12.3f; int iNum=(int)fNum;//强制类型转换成功 //除此之外,里氏替换原则中把父类转换成子类也属于强制类型转换
2、类型不兼容
常用方式有三种:int.Parse、int.TryParse、Convert.ToInt,当然这只是string类型转int类型,还有string类型转double类型double.Parse、double.TryParse、Convert.ToDouble……,或者string类型转其他类型。
下面是Parse转换代码:
//要想字符串转换成int,字符串必须符合int格式 //Parse转换格式失败程序运行时会报错 int parseResult = int.Parse("12");//转换成功 parseResult = int.Parse("a12");//转换失败 //要想字符串转换成double,字符串必须符合double格式 int parseResult = int.Parse("12.3");//转换成功 parseResult = int.Parse("a12.3");//转换失败
下面是TryParse转换代码:
//TryParse转换不成功不会报错,而是返回false int outParam; bool flag = int.TryParse("12", out outParam); //输出flag=True,outParam=12 Console.WriteLine("flag={0},outParam={1}", flag, outParam); flag = int.TryParse("z16", out outParam); //输出flag=False,outParam=0 Console.WriteLine("flag={0},outParam={1}", flag, outParam);
下面是Convert转换代码:
int result = Convert.ToInt32("123"); Console.WriteLine("result=" + result); //转换失败会报错 result = Convert.ToInt32("123a"); Console.WriteLine("result=" + result); //"12.3"转换为int数据要经过两次处理 int fromDouble = (int)double.Parse("12.3"); //输出fromDouble=12 Console.WriteLine("fromDouble="+fromDouble);
相关文章推荐
- C#字符串截取
- C#中的强类型说明
- Head First C#赛狗日项目全部代码
- C#常见异常类型总结
- C#图片压缩类
- 精通C#:Chapter5 封装-学习笔记
- c#基础入门(2)——语法结构、方法、关键字
- ···c#学习(四)···
- C#中字符分隔的几种方式
- C# WinCE项目 VS2008 单例窗体实现
- C# 排序比较
- c# datetimepicker中format设置
- C#使用Process类杀死进程,执行命令等
- [转] C#2010 在TreeView控件下显示路径下所有文件和文件夹
- 变量和常量 定义和声明的其区别
- Win10开发笔记1
- c#之用StreamWriter追加写文件
- c# datatable用法总结
- C#中List与IList的区别
- C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值