C#中is和as操作符的用法 您所在的位置:网站首页 强制类型转换运算符怎么使用的 C#中is和as操作符的用法

C#中is和as操作符的用法

2024-07-11 23:45| 来源: 网络整理| 查看: 265

C#中 As 和强制转换的总结 解析C#中的is和as操作符的用法

C# 是一门强类型语言. 一般情况下. 我们最好避免一个类型强制转成其他类型. 但是有时候难免使用类型转换.

一般有以下几种类型转换的方法供选择:

使用 as 操作符;使用传统 C类型风格的强制转换;使用 is 来做一个类型转换测试. 然后再用 as 或者 强制类型转换;

as 类型转换失败时值为null不抛出异常 但强制转换如果转换失败会抛出异常所以我们要添加异常处理 is : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常

示例1 object o = new object(); if (o is Label) { Label lb = (Label)o; // 这里是C风格的强制类型转换 Response.Write("类型转换成功"); } else { Response.Write("类型转换失败"); }

在上面的代码,CLR实际上会 检查两次对象的类型 ,is操作符先核实一次, 如果o兼容于Lable,那么在(Label)o时会再次核实一次,效率比较低,不建议使用

as:与强制类型转换是一样的,但是永远不会抛出异常,即如果转换不成功,会返回null

示例2 object o = new object(); Label lb = o as Label; // as 操作符 if (lb == null) { Response.Write("类型转换失败"); } else { Response.Write("类型转换成功"); }

在上面的代码中,CLR只会进行一次类型核实,效率要高于 is

注意事项:

as 只能用于引用类型不能用于值类型;

C#中子类与父类的相互转换 子类和父类的关系 子类不能继承父类的私有字段. 可以继承属性与方法.子类会默认调用父类的无参构造函数. 如果父类中有一个有惨的构造函数. 无参构造函数会被覆盖?. 子类调用报错. 解决方法: 使用base()关键字.若子类和父类方法名相同. 子类会覆盖父类的.一个类继承其他类. 那么默认继承Object. 即. 万物基于Object. 里式转换

里氏转换原则:面向对象设计的基本原则,基类出现的地方,子类一定可以出现。 只有子类替换掉父类,软件的功能不受影响时,父类可以真正的被复用。子类可以在父类的基础上增加新的行为。

第一种方法:

Student stu=New student;//创建一个子类对象 Person P=stu;//将子类对象赋给父类对象 P.Show();//调用父类的方法

第二种方法:

Person p =New Student(); //父类对象接受子类的实例对象 Student stu=(student)p; //强制转换成子类

第三种方法:使用关键字(is/as)

is用法:(p is teacher)p是父类的实例化对象,Teacher是带转换的类型,表达式返回的是布尔值。

Person p=New Student(); If(p is Student) { console.Writeline("转换成功") } else { console.Writeline("转换失败") }

as用法:(p as teacher)as先做判断,再转换。返回值为NUll值。\

Person p=New Student(); Student t=p as Student;

所有的子类也都是父类的,可以申明一个父类的变量,来接受其所有的子类; 父类若存的是子类的对象,可以将父类转成相应的子类对象

作用:把不同子类的对象统一转换为父类(基类)的类型,使数据类型达到统一。在父类对象所在的位置都可以传进来子类的对象,尽可能重用代码。

这不是就是多态…



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有