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. JavaScript Date 日期操作

    在前端工程师的道路上,可能有时候需要与时间来打交道,下面我们来看一下日常对日期的操作,今天我们介绍的是Day.js插件 Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Mom ...

  2. 如何自学编程,零基础适合学习Java或者Web前端吗,非科班的能学java吗?

    很多人都会选择自学Java或者前端,相信有在校的大学生,有正在上班想转行的,也有已经在自学的.下面通过几个问题我来给大家分析学习编程的难易程度. 编程是什么? 通俗的理解,编程就是编写程序,哪什么是程 ...

  3. 利用Kibana来查看和管理Elasticsearch的索引(Kibana使用篇)

    经过前面几篇的学习,我们已经知道如何在Kibana里边对Elasticsearch进行操作了,那么如何查看已存在的索引呢,我们来看, 在Management里边可以看到我们刚刚创建的sdb索引.另外还 ...

  4. HDFS你一定要知道,要考的

    你肯定听过Hadoop,对就是那头奔跑的小象. Hadoop作为大数据时代代表性的解决方案被大家所熟知,它主要包含两部分内容: HDFS分布式文件存储 MapReduce分布式计算框架 前面我们分析存 ...

  5. Android RecyclerView使用 及 滑动时加载图片优化方案

    1.控制线程数量 + 数据分页加载2.重写onScrollStateChanged方法 这个我们后面再谈,下面先来看看RecyclerView控件的使用及我们为什么选择使用它 RecyclerView ...

  6. jQuery——尺寸位置

    获取宽:$(".box").width() 设置宽:$(".box").width(200) 获取高:$(".box").height() ...

  7. jQuery——val()、text()、html()

    val():获取标签中的value属性的值.带有参数是赋值(类比js中的value属性) text():获取双闭合标签中的文本值.(不识别标签)(类比innerText) html():获取双闭合标签 ...

  8. 正则表达式提取String子串

    最近遇到了一个字符串处理的功能,忽然发现了正则表达式的强大,深深的被她的迷人魅力所吸引,以前只是听说,今天亲眼所见,亲身经历,真的彻底折服. 言归正传:java中String类里面封装了很多字符串处理 ...

  9. selenium的三种等待时间

    //隐式等待(20秒以内没哥一段时间就会去找元素,如果没找大也不会报错,过了20s才会报错) //driver.manage().timeouts().implicitlyWait(20, TimeU ...

  10. Centos7搭建nginx并提供外网访问

    搭建nginx之后,80端口,其他机器无法访问 查询端口是否开启 firewall-cmd --query-port=80/tcp 永久开放80端口 firewall-cmd --permanent ...