用于在兼容的引用类型之间执行转换。例如:
string s = someObject as string;
1
if (s != null)
2
{
3
// someObject is a string.
4
}
5
备注
if (s != null)2
{3
// someObject is a string.4
}5

as 运算符类似于强制转换,所不同的是,当转换失败时,运算符将产生空,而不是引发异常。更严格地说,这种形式的表达式
1
expression as type
2
等效于
expression as type2

1
expression is type ? (type)expression : (type)null
2
示例:
expression is type ? (type)expression : (type)null2

1
// cs_keyword_as.cs
2
// The as operator.
3
using System;
4
class Class1
5
{
6
}
7
8
class Class2
9
{
10
}
11
12
class MainClass
13
{
14
static void Main()
15
{
16
object[] objArray = new object[6];
17
objArray[0] = new Class1();
18
objArray[1] = new Class2();
19
objArray[2] = "hello";
20
objArray[3] = 123;
21
objArray[4] = 123.4;
22
objArray[5] = null;
23
24
for (int i = 0; i < objArray.Length; ++i)
25
{
26
string s = objArray[i] as string;
27
Console.Write("{0}:", i);
28
if (s != null)
29
{
30
Console.WriteLine("'" + s + "'");
31
}
32
else
33
{
34
Console.WriteLine("not a string");
35
}
36
}
37
}
38
}
39
输出:
// cs_keyword_as.cs2
// The as operator.3
using System;4
class Class15
{6
}7

8
class Class29
{10
}11

12
class MainClass13
{14
static void Main()15
{16
object[] objArray = new object[6];17
objArray[0] = new Class1();18
objArray[1] = new Class2();19
objArray[2] = "hello";20
objArray[3] = 123;21
objArray[4] = 123.4;22
objArray[5] = null;23

24
for (int i = 0; i < objArray.Length; ++i)25
{26
string s = objArray[i] as string;27
Console.Write("{0}:", i);28
if (s != null)29
{30
Console.WriteLine("'" + s + "'");31
}32
else33
{34
Console.WriteLine("not a string");35
}36
}37
}38
}39

1
0:not a string
2
1:not a string
3
2:'hello'
4
3:not a string
5
4:not a string
6
5:not a string
7
0:not a string2
1:not a string3
2:'hello'4
3:not a string5
4:not a string6
5:not a string7


