今天来聊聊C#关键字as,这是我最喜欢的C#语法之一了。
01
as简介
as运算符类似于强制类型转换功能,但是它的好处就是,如果转换失败不会引发异常,而是返回null。
02
使用方法
示例代码:
object[] array = new object[] { 1, "two", 3.3 };
// i的值为1
int? i = array[0] as int?;
// s的值为"two"
string s = array[1] as string;
// j的值为null,因为3.3不能转换为int,但不会引发异常
int? j = array[2] as int?;
as写法与传统写法对比字符串转换为整数,代码更加简洁、易懂:
object[] array = new object[] {3};
//as写法,代码简单易懂
int? num1 = array[0] as int?;
if (num1 != null)
{
Console.WriteLine(num1); //输出 3
}
//传统写法,代码冗长
int? num2 = null;
try
{
num2 = (int?)array[0];
}
catch
{
num2 = null;
}
if (num2 != null)
{
Console.WriteLine(num2); //输出 3
}
03
as使用注意事项
as运算符支持引用类型和可为null的值类型字符串转换为整数,但是对于不同值类型的转换,应该使用强制类型转换或者转型方法。
比如以下代码将字符串转为int、转换为int:
// 编译错误:不能将字符串转换为整数
string s = "11";
int? i = s as int?;
//以下转换没有意义,d2永远为null
double d1 = 1.1;
int? d2 = d1 as int?;
//正确方法
int j = int.Parse(s);
int k = Convert.ToInt32(s);
int d3 = (int)d1;
觉得好看 点个在看
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。