C#中is和as用法实例分析
这篇文章主要介绍了C#中is和as用法实例分析,需要的朋友可以参考下
本文实例讲述了C#中is和as的用法,对加深is与as用法的理解有一定的帮助借鉴作用。具体如下:
现来看个例子:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class User { } public class Group { } class Program { static void Main(string[] args) { Object oUser = new User(); Object user = (Group)oUser; } } |
这样会报错(InvalidCastException),由于C#安全机制,它会去判断一次。我们这里做了非法的转换。
Is做判断:is说判断对象是不是你要的那个类型(这里说User)
修改后的示例如下:
|
1
2
3
4
5
6
7
8
9
10
11
|
class Program { static void Main(string[] args) { Object obj = new User(); if (obj is User) { User user = (User)obj; } } } |
这样的话,我们在obj is User这里做了一次判断,我们刚才说了,(User)obj这样的操作(强制转换)编译器还会做一次操作,这样就有性能上面的消耗。来看看AS。
AS操作:如果说改对象就转换,不是则返回null.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
class Program { static void Main(string[] args) { Object obj = new User(); User user = obj as User; if(user==null) { // handle error //.... } } } |
列2:
1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 namespace ConsoleApplication1 5 { 6 class IsOrAsClass 7 { 8 class Animal 9 { 10 public void Eat() 11 { 12 Console.WriteLine("Eating..."); 13 } 14 public override string ToString() 15 { 16 return "I am Eating"; 17 } 18 } 19 //家禽类 20 class jia:Animal 21 { 22 23 } 24 //狗 25 class Dog : jia 26 { 27 28 } 29 //鸟 30 class bird 31 { 32 33 } 34 static void Main() 35 { 36 IsOrAsClass app=new IsOrAsClass(); 37 // 38 Dog d=new Dog(); 39 app.UseIsOpreate(d); 40 app.UseAsOpreate(d); 41 // 42 bird b = new bird(); 43 app.UseAsOpreate(b); 44 45 } 46 //使用Is运算符 47 void UseIsOpreate(Animal a) 48 { 49 if (a is jia) 50 { 51 jia j = (jia)a; 52 j.Eat(); 53 } 54 } 55 //使用AS运算符 56 void UseAsOpreate(object o) 57 { 58 jia j = o as jia; 59 if (j != null) 60 { 61 Console.WriteLine(j.ToString()); 62 } 63 else 64 { 65 Console.WriteLine("{0} is not Animal", o.GetType().Name); 66 } 67 } 68 } 69 }
注:个人比较喜欢用As,简化了操作也提高了性能,做一个NULL判断,直接处理这种异常也说很方便。
希望本文所述方法对大家的C#程序设计能有一定的帮助与借鉴价值。

浙公网安备 33010602011771号