封装:简化用户接口,隐藏实现细节。 get{return 属性值;} set{属性值 = value;}

继承:子类继承父类所有非私有成员。继承具有传递性,单根性。 隐式继承:用引号(:)实现。 显示继承:关键字(:base)实现。

显示继承与隐式继承的区别: 简单来说就是说 如果继承的一堆接口中 有2个或者2个以上的接口有同名的属性/方法,而它们又是不同的功能的话,你就应该显示继承接口 反过来 随意(一般用隐式,因为可以偷懒) 如果你很犹豫应该用哪一种 而又必须保证不会出问题 直接使用显式

方法的重写:重写必须发生在继承基础之上。可用关键字virtual设置为虚方法,在用override重写。或用关键字new重写。 virtual关键字使用语法:[访问修饰符]virtual[返回类型]方法名称(参数列表) 重写可以重写  虚方法、  已经重写过的方法  、抽象方法

抽象类与抽象方法: 抽象类:不能被实例化的类称为抽象类,抽象类是派生类的基础。抽象类只能被普通类继承并实现。关键字abstract抽象类   不能实例化、  能被普通类继承并实现 定义语法:abstract class<类名>

抽象方法:抽象方法没有方法体,只能定义在抽象类中。

抽象类可以不写抽象方法,但抽象方法一定得放在抽象类中。

接口: 定义语法:[访问修饰符]interface<接口名> 关键字:interface 定义接口名一般都是以"i"开头,例:iname 接口主体不能写带方法体的方法;不能写访问修饰符;不能写属性。

接口与抽象类的区别:                     抽象类                        接口

用abstract定义               用interface定义

只能继承一个类               可以实现多个接口

非抽象派生类必须实现抽象方法          实现接口的类必须实现所有成员 不同点

需要override实现抽象方法                   直接实现

不能被实例化 相同点  包含为实现的方法  派生类(子类)必须实现未实现的方法

===============================================================================================

索引器:关键字==this 【C#通过提供索引器,可以象处理数组一样处理对象。特别是属性,每一个元素都以一个get或set方法存在。 作用:索引器可以使用户像访问数组一样访问类成员。

语法:     [访问修饰符]数据类型 this[数据类型 标识符]

{               get{}               set{}      }

例:namespace syq {

class Program

{         static void Main(string[] args)

{             Clas cls = new Clas(3);

Student stu = null;             //创建三个学生信息,并向班级中加载学生信息

for (int i = 0; i < 3; i++)             {

stu = new Student("蓝天" + (i + 1));

cls[i] = stu;             }

//按索引进行检索并显示结果

Console.WriteLine(cls[2].Name);

//按姓名进行检索并显示结果

Console.WriteLine(cls["蓝天1"].Name);         }     }

class Class3     {     }     /// <summary>     /// 学生信息类     /// </summary>     public class Student

{         private string _name;         public Student(string name)         {             this._name = name;         }         public string Name         {             get { return this._name; }         }     }     /// <summary>     /// 班级类,即学生的集合     /// </summary>     public class Clas     {         //用于存放学生信息的数组         private Student[] _students;         //用于创建班级时必须指定该班级的大小         public Clas(int count)         {             this._students = new Student[count];         }         //传递的索引用于对照片数组进行检索         public Student this[int index]         {             get {                     if (index < 0 || index >= this._students.Length)//验证索引范围                     {                         Console.WriteLine("索引无效");                         return null;                     }                     return _students[index];//对于有效索引,返回请求的学生信息                 }             set {                     if (index < 0 || index >= this._students.Length)//验证索引范围                     {                         Console.WriteLine("索引无效");                         return;                     }                     //对于有效索引,像数组加载新的学生信息                     this._students[index] = value;                 }         }         //这里定义的按学生姓名检索照片的索引是只读的         public Student this[string name]         {             get             {                 //循环遍历数组中的所有学生信息                 foreach (Student s in this._students)                 {                     if (s.Name == name)//将学生的姓名与索引器参数进行比较                         return s;                 }                 Console.WriteLine("未找到");                 return null;             }

}     } }

委托:关键字==delegate 【 委托包含对方法而不是方法名称的引用。使用委托可以在运行时动态设定要调用的方法。委托可以理解为是一个指向方法的指针,它是类型安全的。 它具有两大特点:面向对象,类型安全和可靠的。

委托若要执行某一方法,则返回类型与参数列表必须和方法一致。 语法:[访问修饰符]delegate 返回类型 委托名(参数列表);

例:namespace weituo {     class Program     {         static void Main(string[] args)         {             pengge pp = new pengge();             pp.chi();         }         //定义委托。委托若执行方法,返回类型与参数列表必须和方法相同         public delegate string pgg(int money);         //委托者         public class pengge         {             public void chi()             {                 zhaoshuai mm = new zhaoshuai();   //实例化委托                 pgg cc = new pgg(mm.mai2);//调用委托                 Console.WriteLine(cc(2));             }         }         //执行者         public class zhaoshuai         {             public string mai()             {                 return "烧饼";             }             public string mai2(int money)             {                 return "又买烧饼?!!!!";             }         }     } } 】

事件:关键字==event 【 事件是一种特殊的委托。

语法:[访问修饰符]event 委托名 事件名;

例:namespace shijian {

class Program     {

static void Main(string[] args)         {             pengge pgg = new pengge();             pgg.chi();         }         //定义委托         public delegate void dlgt();         public class pengge         {             //定义事件             public event dlgt myevent;             public void chi()             {             zhaoshuai zs = new zhaoshuai();             //订阅事件             myevent += new dlgt(zs.maifan);             myevent += new dlgt(zs.toudu);             myevent += new dlgt(si);             //触发事件             myevent();             }             public void si()             {                 Console.WriteLine("原来是这样");             }         }         public class zhaoshuai         {             public void maifan()             {                 Console.WriteLine("又买饭?!");             }             public void toudu()             {                 Console.WriteLine("鹏哥威武!毒死你!");             }         }     } } 】

事件与委托的区别: 事件就是一个狭义的委托,也就是事件是一个用于事件驱动模型的专用委托.

通俗的讲,委托你可以在客户代码中直接调用委托来激发委托指向的函数,而事件不可以,事件的触发只能由服务代码自己触发

也就是说在你的代码里委托你不但可以安排谁是它的调用函数,还可以直接调用它,而事件不能直接调用,只能通过某些操作触发

C#入门基础三的更多相关文章

  1. Linux入门基础(三):Linux用户及权限基础

    用户基础 用户和组 每个用户都拥有一个userid 每个用户都属于一个主组,属于一个或多个附属组 每个组拥有一个groupid 每个进程以一个用户身份运行,受该用户可访问资源限制 每个可登陆用户拥有一 ...

  2. mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析

    一:SqlMapConfig.xml配置文件的内容和配置顺序如下 properties(属性) settings(全局配置参数) typeAiases(类型别名) typeHandlers(类型处理器 ...

  3. Objective-C 快速入门--基础(三)

    1.OC有几种方式创建字符串对象?如:如何创建一个字符串对象:@“Baby”. OC中有3种方式创建字符串对象: 示例:main.m文件中: 控制台输出: 2.OC中如何获取字符串的长度? OC中获取 ...

  4. Reactjs 入门基础(三)

    State 和 Props以下实例演示了如何在应用中组合使用 state 和 props .我们可以在父组件中设置 state, 并通过在子组件上使用 props 将其传递到子组件上.在 render ...

  5. 2015.4.10-C#入门基础(三)

    今天,我们聊一聊一些基本问题: 1.修饰符有哪些?有什么区别呢? 首先大家想到的应该是 public:特点是所属类的成员和非所属类的成员都可以访问 private:只有所属类的成员才可以访问 prot ...

  6. Springmvc入门基础(三) ---与mybatis框架整合

    1.创建数据库springmvc及表items,且插入一些数据 DROP TABLE IF EXISTS `items`; CREATE TABLE `items` ( `id` int(11) NO ...

  7. PHP基础入门(三)---PHP函数基础

    PHP基础入门(三)---函数 今天来给大家分享一下PHP的函数基础.有了前两章的了解,想必大家对PHP有了一定的基础了解.想回顾前两章的朋友可以点击"PHP基础入门(一)"&qu ...

  8. MyBatis基础入门《三》Select查询集合

    MyBatis基础入门<三>Select查询集合 描述: 代码新增了一个MybatisUtil工具类,查询数据库返回集合的时候,接收数据的三种方式.由于代码会渐渐增多,未涉及改动过的文件不 ...

  9. Python入门基础学习 三

    Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...

随机推荐

  1. HttpWebResponse远程服务器返回错误: (500) 内部服务器错误。

    现象 我们编码实现请求一个页面时,请求的代码类似如下代码: HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl); req.Us ...

  2. 【Java学习笔记】集合转数组---toArray()

    package p2; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ...

  3. myeclipse2014激活

    MyEclipse2014破解教程 一. 在破解myeclipse2014之前,要先把环境变量配置好: 1)打开我的电脑--属性--高级--环境变量 2)新建系统变量JAVA_HOME 和CLASSP ...

  4. extjs6环境

    安装JDK http://www.oracle.com/technetwork/java/javase/downloads/ 安装到指定路径,例如D:\Java配置环境变量 此电脑—属性—高级系统设置 ...

  5. JS-reverse(数组内容颠倒)

    var arr1 = [ 1,2,3,4,5,6 ];// arr1.reverse();// alert( arr1 ); //怎么颠倒字符串呢? var str = 'abcdef';alert( ...

  6. HTTP1.1初识

    Http(超文本传输协议)是一个基于请求与响应模式的.无状态的.应用层的协议. Http1.1版中,有一个持续连接(Persistent Connections)机制,其作为Http1.1中建立连接的 ...

  7. 【Android UI】Android开发之View的几种布局方式及实践

    引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理 ...

  8. 多进程模块multiprocessing的使用

    该模块提供如下功能: 建立并管理运行指定函数的子进程 基本接口: 1 Process(group, target, name, args[, kwargs]): 初始化子进程对象 2 p.daemon ...

  9. python socket server源码学习

    原文请见:http://www.cnblogs.com/wupeiqi/articles/5040823.html 这里就是自己简单整理一下: #!/usr/bin/env python # -*- ...

  10. Make Notepad++ auto close HTML/XML tags after the slash(the Dreamweaver way)

    I've been looking for a Notepad++ plugin that can close HTML/XML tags after a slash just like the wa ...