用于在兼容的引用类型之间执行转换。例如:
string s = someObject as string;
1
if (s != null)
2
{
3
// someObject is a string.
4
}
5![](/Images/OutliningIndicators/None.gif)
备注![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
5
![](/Images/OutliningIndicators/None.gif)
as 运算符类似于强制转换,所不同的是,当转换失败时,运算符将产生空,而不是引发异常。更严格地说,这种形式的表达式
1
expression as type
2![](/Images/OutliningIndicators/None.gif)
等效于![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
1
expression is type ? (type)expression : (type)null
2![](/Images/OutliningIndicators/None.gif)
示例:![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
1
// cs_keyword_as.cs
2
// The as operator.
3
using System;
4
class Class1
5
{
6
}
7![](/Images/OutliningIndicators/None.gif)
8
class Class2
9
{
10
}
11![](/Images/OutliningIndicators/None.gif)
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![](/Images/OutliningIndicators/InBlock.gif)
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![](/Images/OutliningIndicators/None.gif)
输出:![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
6
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
10
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
37
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
38
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
39
![](/Images/OutliningIndicators/None.gif)
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![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)