C#总结复习5(需要进一步复习)
第十五章 接口
1、接口: C++中允许多继承没有接口的概念。而java与C#中有,因为C#中 是单继承多接口。
所谓的接口,其实和抽象类、方法相似。都只有一个空方法。其本身不可以为基类,但是允许被其他类继承,而后由其他类或结构实现里面的方法。
2、接口是引用类型
它和继承类似,我们之前可以通过基类的引用的实例化可以访问到派生类当中的方法。在此,我们也可以通过强制转换为接口引用,从而访问实现接口类当中的方法。
interface iifc1
{
void PrintOut(string s);
}
class myclass : iifc1
{
public void PrintOut(string s);
}
{
myclass mc11 = new myclass();
mc11.PrintOut("i lvoe you!");
iifc1 ifc = (iifc1)mc11;//将类对象的引用转换为接口类型的引用。
ifc.PrintOut("i love you!");//调用引用的方法
}
注:实现接口的类可以从它基类继承实现的代码。也就是说,我可以自己不实现,让基类实现也可以。
派生类为继承接口的。
如果两个接口函数里面都有同样的函数需要实现的话,我们可以采用显式接口成员实现。就是 在实现的时候加上接口名 即可。这样不会造成冲突。
interface iifc1
{
void PrintOut(string s);
}
interface iifc2
{
void PrintOut(string s);
}
class myclass : iifc1, iifc2
{
public void iifc1.PrintOut(string s) { }
public void iifc2.PrintOut(string s) { }
}
接口也可以继承接口,不同的类可以实现同一个接口。
第十六章 转换
隐式转换:就是自动转换。
显式转换:就是强制转换。
下面是转换的类型:
我们也可以通过 检测转换结果是否溢出的能力,叫做 溢出检测上下文。
Unchecked(表达式);
对于引用转换:有一点点不一样。
注:从衍生类(派生类)到基类的转换都是隐式转换。
装箱与拆箱:
整个装箱与拆箱的过程如下:
//下面是拆箱与装箱的过程,其实就是通过object为中介,把数据变成可转换的类型。
int i = 10;
object oi = i;//对i装箱并把引用赋值为oi
int ii = (int)oi;//对oi拆箱并把值赋值给ii
用户自定义转换:
通过关键字:implicit 与 explicit 实现。
Public static implicit operator TargetType(SourceType Identifier){ }
两种运算符 : is 与 as
is 主要是用来 检查 从一种类型转换为另一种类型是否会成功。这个有预判效果,事前判断。与unchecked 事后判断不一样。
as 与强制转换类似,假如转换失败,返回null而不抛出异常。
If(bill is Person)
{
P = bill; //这个时候才转换成功。
}
P = bill as Person;
If(p != null)
{
//已经转换成功。
}
C#总结复习5(需要进一步复习)的更多相关文章
- C#复习总结6 (需要进一步复习)
第十七章 泛型 什么是泛型 泛型是为了适应多种不同种类的数据类型而存在的.有了它之后,我们可以不用为不同的数据类型而单独写一个适配.这样很麻烦. 类型不是对象,而是对象的模板.泛型类型也不是类型,而是 ...
- 【JS复习笔记】07 复习感想
好吧,其实<JavaScript语言精粹>后面还简单介绍了代码风格,优美特性,以及包含的毒瘤.糟粕. 但我很快就看完了,发现其实都在前面讲过了,所以就不写了. 至今为止已经算是把JavaS ...
- JavaSE复习_11 IO流复习
△FileReader是使用默认码表读取文件, 如果需要使用指定码表读取, 那么可以使用InputStreamReader(字节流,编码表) FileWriter是使用默认码表写出文件, 如果需 ...
- JavaSE复习_9 集合框架复习
△列表迭代器也是不支持在迭代的时候添加元素的,只是列表迭代器自己定义了增删的方法而已.迭代器可以看成实在两个元素之间的指针,每当调用next就跳过一个元素并返回刚刚跳过的元素. △HashTable不 ...
- 从0开始复习JS---1、函数复习
1. 写一个函数,实现对数字数组的排序. function get_order(array){ for(var i = 0; i <array.length-1; i++){ for(var j ...
- noip初赛复习总纲
初赛复习总纲 目录 初赛复习总纲 计算机发展史 计算机的分类 计算机的应用 操作系统盘点 计算机的基本结构 中央处理器(**CPU**--**Central Processing Unit**) 存储 ...
- HDOJ(HDU) 2078 复习时间
Problem Description 为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑.xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课 ...
- 5J - 复习时间
为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑.xhd复习有个习惯,在复习完一门课后,他总是挑一门更简单的课进行复习,而他复习这门课的效率为两门课的难度差的平方,而复习第一门课的效率为1 ...
- HDU 2078 复习时间
http://acm.hdu.edu.cn/showproblem.php?pid=2078 Problem Description 为了能过个好年,xhd开始复习了,于是每天晚上背着书往教室跑.xh ...
随机推荐
- ZZULIoj 1913: 小火山的计算能力
Description 别人说小火山的计算能力不行,小火山很生气,于是他想证明自己,现在有一个表达式,他想计算出来. Input 首先是一个t(1<=20)表示测试组数.然后一个表达式,表达式长 ...
- java中的equals与==的区别
equals是Object类的公共方法,方法内部是用==实现的.但是很多类都重写了equals方法,例如基本数据类型的封装类和String类,重写后比较的是对象的值或者内容是否相同.而==是比较地址, ...
- spring junit4 单元测试运行正常,但是数据库并无变化
解决方案 http://blog.csdn.net/molingduzun123/article/details/49383235 原因:Spring Juint为了不污染数据,对数据的删除和更新操作 ...
- NYOJ 293 Sticks
Sticks 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 George took sticks of the same length and cut them r ...
- Leetcode 368.最大整除子集
最大整除子集 给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (Si,Sj) 都要满足:Si % Sj = 0 或 Sj % Si = 0. 如果有多个目标子集,返回其中任 ...
- 【Kubernetes】深入解析声明式API
在Kubernetes中,一个API对象在Etcd里的完整资源路径,是由:Group(API组).Version(API版本)和Resource(API资源类型)三个部分组成的. 通过这样的结构,整个 ...
- Git 撤消操作
修改最后一次提交 有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了.想要撤消刚才的提交操作,可以使用 --amend 选项重新提交: $ git commit --amend 此命令将 ...
- BZOJ 1260: [CQOI2007]涂色paint【区间DP】
Description 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符串表示这个目标:RGBGR. 每次你可以把一段连续 ...
- noip普及组考纲+样题合集——初级篇(OIer必看)
很明显我是想发提高组合集的.普及组考纲……用发么. 当然如果你想看的话也可以,就一点点: 递归.排序…… 很明显上面那都不是重点.普及组只要掌握搜索.二分.单调队列.数学.随机化等等,一等奖没问题的, ...
- hdu 3711
#include<stdio.h> #include<math.h> #include<stdlib.h> int cmp(const void *a,const ...