C#关键字详解第一节
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#关键字详解第一节的更多相关文章
- C#关键字详解第二节
base:基类 在有些书中base的解释为表示父类,没错,base可以表示父类,但我更想理解成基类,因为更原始更具象,既 然是类,那么他就符合面向对象的设计规则和特点,我们知道面向对象的三个特点是封装 ...
- C#关键字详解第五节
最近有点忙于追剧<人民的名义>所以并未及时更新,所以大家理解理解,哈哈,这部剧很不错!推荐大家去 看看!下面我们继续C#关键字解释! const:常量 一般我们说常量都是以PI(3.14) ...
- python关键字详解
今天依旧在啃:<笨方法学python>,其中习题37是复习各种关键字.我本想百度一下记一下就ok了,但是百度出来第一个就Hongten的博客.我才意识到我也有博客,我应该学习他,把这些积累 ...
- Java多线程(三)—— synchronized关键字详解
一.多线程的同步 1.为什么要引入同步机制 在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源.必须对这种潜在资源冲突进行预防. 解决方法:在线程使用一个资源时为其加锁即可. 访问资 ...
- Delphi、Lazarus保留字、关键字详解
Delphi.Lazarus保留字.关键字详解 来自橙子,万一的博客以及其他地方 保留字:变量等标识符可以再使用: 关键字:有特定含义,不能再次重新定义: 修饰字:类似保留字的功能,也就是说可以重用 ...
- java关键字(详解)
目录 1. 基本类型 1) boolean 布尔型 2) byte 字节型 3) char 字符型 4) double 双精度 5) float 浮点 6) int 整型 7) long 长整型 8) ...
- Delphi 关键字详解
Delphi 关键字详解[整理于 "橙子" 的帖子] absolute //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var Str: ]; S ...
- 【转载】C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...
- IIS负载均衡-Application Request Route详解第一篇: ARR介绍(转载)
IIS负载均衡-Application Request Route详解第一篇: ARR介绍 说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Applica ...
随机推荐
- Android EditText默认不获取焦点
1.当页面中有多个EditText时,第一个EditText会自动获取焦点,取消的办法: 在EditText的父View中调用: android:focusable="true" ...
- Linux音频驱动-ALSA概述
概述 ALSA(Advanced Linux Sound Architecture)是linux上主流的音频结构,在没有出现ALSA架构之前,一直使用的是OSS(Open Sound System)音 ...
- P4111 [HEOI2015]小Z的房间 生成树计数
这个题是生成树计数的裸题,中间构造基尔霍夫矩阵,然后构成行列式,再用高斯消元就行了.这里高斯消元有一些区别,交换两行行列式的值变号,且消元只能将一行的数 * k 之后加到别的行上. 剩下就没啥了... ...
- 杂项:BPM
ylbtech-杂项:BPM 1.返回顶部 1. BPM,即业务流程管理,是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法,常见商业管理教育如EMBA.MBA ...
- 37. ext 中sm什么意思
转自:https://zhidao.baidu.com/question/112450217.htmlsm是SelectionModel的缩写默认为RowSelectionModel其他模式还有Che ...
- [Swift通天遁地]九、拔剑吧-(9)创建支持缩放、移动、裁切的相机视图控制器
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- python - 解决 ModuleNotFoundError: No module named 'pip'
1.pip的版本为 9.0.3 想用 pip install -U pip 更新下包,但是在更新过程中出现了报错,如下所示: 2.然后尝试用pip install pandas包,提示 Module ...
- 【BZOJ4241】历史研究(回滚莫队)
题目: BZOJ4241 分析: 本校某些julao乱膜的时候发明了个"回滚邹队",大概意思就是某个姓邹的太菜了进不了省队回滚去文化课 回滚莫队裸题qwq(话说这个名字是不是莫队本 ...
- Codeforces 792D
题意:给定一棵拥有n个节点的满二叉树(即n==2^x-1),q个查询,每次给出一个节点的编号,再给出一个由L,R,U组成的字符串序列,依次表示向左子节点.右子节点.父节点移动,如果移动不合法,则忽略. ...
- ACM_小凯的排序(字符串)
小凯的排序 Time Limit: 2000/1000ms (Java/Others) Problem Description: 调皮的小凯喜欢排序,拿到什么东西都要排一下序.现在他觉得单一的递增递减 ...