c#基础入门(3)——异常、三元表达式、转义符、类型转换

异常

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);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

changuncle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值