abstract:抽象类:

他表达对问题或者实际中的事物,对象等所设计出的抽象概念,比如一个灵感、生物等,这些都是抽像,

但是他们往往也有具体的指向,比如生物圈有人类,猴子,老虎等等,老虎和人类是实际存在的,但是

生物是抽象的,在C#中抽象类往往就是表达一个实际存在的事物指向的概念对象,但是抽象的访问修饰必

须是public,不管是类还是方法或者属性,比如创建一个抽象类生物,而人类这个实际存在的事物就可

以被认为是他的子类,子类可以继承父抽象类,但是必须加override(重载)去实现抽象类的属性或者

方法,如果不加override则子类-人类则必须是抽象类,这样人类也是当做一个抽象概念去实例化,而人

类的子类可以是白种人,黄种人等等。。这取决于对事物的探讨深度。
namespace 抽象类
{
public abstract class Biological
{
public int Height { get; set; }//定义一个高度(生物具有的基本属性)
public int Weight { get; set; }//定义一个重量
public string Sex { get; set; }//定义性别
}
public class Human:Biological//子类人类继承了父抽象类
{
//人类有身高和体重(此处列举了一个身高180厘米体重155斤的男性人类)
public override int Height
{
get { return Height;}
set { Height = ; }
}
public override int Weight
{
get { return Weight;}
set { Weight = ; }
}
public override string Sex
{
get { return Sex; }
set { Sex="男性"; }
}
}
}
as类型转换与is类型转换判断: C#的类型转换是as,但是提到类型转换不得不说到一个关键字is,is看起来和as差不多但是真正的含义 却相差甚远,is是检查一个对象是否兼容与其他的属性并且永远返回的值是一个Bool值,如果一个对象 是某个类型或是其父类型的话就返回为true,否则的话就会返回为false,他不会抛出异常。现在来看看 在winform中的is关键字用法案例 namespace is关键字
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
Object obj = new Object();//实例化基类
if (obj is Label)//此时的Label是类型而不是标签
{
MessageBox.Show("类型转换失败");
}
else
{
MessageBox.Show("类型转换成功");
}
}
}
}
运行结果是类型转换成功!所以is只是做类型兼容判断,并不执行真正的类型转换。返回true或false,
不会返回null,对象为null也会返回false,但是is可以做值类型的转换判断,而as则不可以!切记!
而as是将对象转换成我们所需要的对象,比如一个黄红人可以转化成黑种人(晒黑就行了)这个只是个举
例,as不会抛出异常,但是如果结果为空的话会抛出NullReferenceException异常,正常情况下会直接返
回转换结果,这是与is的最根本区别!但是!as转换类型是必须转换的对象是被转换对象类型的派生类,
现在来看看在winform中的as关键字用法案例
namespace as关键字
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
Object obj = new Object();//实例化基类
Label label = obj as Label;//将基类转换成label标签类
if (label == null)
{
MessageBox.Show("类型转换失败");
}
else
{
MessageBox.Show("类型转换成功");
}
}
}
}
程序运行会提示类型转化失败,当然,基类怎么可能转换成label类,你让一个鸡转换为一个蛋那怎么行
呢。is与as的比较就是这样,as更高效也更安全,推荐尽可能的使用as关键字去转换类型,而不是一个括
号加类型:()……这样去转换!这就是is与as关键字

C#关键字详解第一节的更多相关文章

  1. C#关键字详解第二节

    base:基类 在有些书中base的解释为表示父类,没错,base可以表示父类,但我更想理解成基类,因为更原始更具象,既 然是类,那么他就符合面向对象的设计规则和特点,我们知道面向对象的三个特点是封装 ...

  2. C#关键字详解第五节

    最近有点忙于追剧<人民的名义>所以并未及时更新,所以大家理解理解,哈哈,这部剧很不错!推荐大家去 看看!下面我们继续C#关键字解释! const:常量 一般我们说常量都是以PI(3.14) ...

  3. python关键字详解

    今天依旧在啃:<笨方法学python>,其中习题37是复习各种关键字.我本想百度一下记一下就ok了,但是百度出来第一个就Hongten的博客.我才意识到我也有博客,我应该学习他,把这些积累 ...

  4. Java多线程(三)—— synchronized关键字详解

    一.多线程的同步 1.为什么要引入同步机制 在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源.必须对这种潜在资源冲突进行预防. 解决方法:在线程使用一个资源时为其加锁即可. 访问资 ...

  5. Delphi、Lazarus保留字、关键字详解

    Delphi.Lazarus保留字.关键字详解 来自橙子,万一的博客以及其他地方 保留字:变量等标识符可以再使用: 关键字:有特定含义,不能再次重新定义: 修饰字:类似保留字的功能,也就是说可以重用 ...

  6. java关键字(详解)

    目录 1. 基本类型 1) boolean 布尔型 2) byte 字节型 3) char 字符型 4) double 双精度 5) float 浮点 6) int 整型 7) long 长整型 8) ...

  7. Delphi 关键字详解

    Delphi 关键字详解[整理于 "橙子" 的帖子] absolute //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var   Str: ];   S ...

  8. 【转载】C/C++中extern关键字详解

    1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...

  9. IIS负载均衡-Application Request Route详解第一篇: ARR介绍(转载)

    IIS负载均衡-Application Request Route详解第一篇: ARR介绍 说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Applica ...

随机推荐

  1. 【Angular】过滤器

    AngularJS学习笔记 {{ name | uppercase}} {{ 123.456789 | number:2 }} app.controller('DemoController', ['$ ...

  2. 【POJ 1958】 Strange Towers of Hanoi

    [题目链接] http://poj.org/problem?id=1958 [算法] 先考虑三个塔的情况,g[i]表示在三塔情况下的移动步数,则g[i] = g[i-1] * 2 + 1 再考虑四个塔 ...

  3. UNDO表空间不足解决方法

    确认UNDO表空间名称 select name from v$tablespace; 检查数据库UNDO表空间占用空间情况以及数据文件存放位置: select file_name,bytes/1024 ...

  4. E20170620-hm

    dump  n. 垃圾场; 仓库; 无秩序地累积;  vt. 倾倒; 倾销; 丢下,卸下; 摆脱,扔弃; terminate   vt. 结束; 使终结; 解雇; 到达终点站; adj. 结束的; d ...

  5. struts表单验证xml配置文件

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC &quo ...

  6. 互斥的数(hash)

    1553 互斥的数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold     题目描述 Description 有这样的一个集合,集合中的元素个数由给定的N决定, ...

  7. [Swift通天遁地]五、高级扩展-(11)图像加载Loading动画效果的自定义和缓存

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. spring boot打包文件后,报错\No such file or directory

    现象: 一段代码: ClassLoader loader = XXXUtil.class.getClassLoader(); String jsFileName = loader.getResourc ...

  9. android接收mjpg-streamer软件视频流

    [代码]主要实现代码 package cn.dong.mjpeg; import java.io.InputStream; import java.net.HttpURLConnection; imp ...

  10. 影响ERP成功实施的因素及实施方法

    一.影响ERP实施的因素 1.企业自身管理和认识上的问题.在ERP实施过程中没有用变革管理的理念和方法来策划和管理ERP的实施是导致ERP失败的主要原因. ERP作为一种管理工具他的实施本身就是操作手 ...