索引器

    class Program
{
static void Main(string[] args)
{
Employee e1 = new Employee();
e1[0] = "三";
e1[1] = "张";
e1[2] = "金华";
Console.WriteLine("我叫{1}{0},出生自{2}",e1[0],e1[1],e1[2]);
Console.ReadKey();
}
public class Employee
{
string lastName;
string firstName;
string cityOfBirth; public string this[int index]
{
get
{
switch(index)
{
case 0:
return lastName;//return case程序块结束,所以不需要加break
case 1:
return firstName;
case 2:
return cityOfBirth;
default:
throw new Exception ();
} }
set
{
switch (index)
{
case 0:
this .lastName =value;
break;
case 1:
this.firstName=value;
break;
case 2:
this .cityOfBirth=value;
break ;
default :
throw new Exception("程序出错");
}
}
}
}
}

方法的重载:

重载的方法具有相同的方法名,但参数列表不同(包括参数个数,相应位置参数的类型不同),返回类型不同不能作为重载,强行会出错。

意义:同一个方法可以有多中实现方式,可以接受多种参数;这是C#静态多肽的体现。

构造函数
1、构造函数用来初始化类的实例

2、要是外部访问类,需要将构造函数声明为public

3、所有类默认都有一个无参数的构造函数

4、构造函数可以有多重重载,参数一般用来初始化类的字段

类的继承

1、一个类只能继承一个父类,但可以被多个子类继承。

2、父类成员是子类的共性

3、父类变量可以是子类的对象,反之不行。

例:animal 类,dog类  animal a=new dog();   反之需要强制转换:dog d=(dog)a;

virtual修饰符:父类中的方法用virtual修饰符修饰(表示虚方法),子类可以用override重写该方法。动态多肽的体现

只有在父类中将方法修饰为abstract或者virtual修饰的时候才能用override重写。

new修饰符:用于隐藏基类成员,可用于类的所有成员,而override只能用于函数成员。

抽象类

用abstract修饰的类,不能new对象,只能被子类继承,将子类对象指向父类(抽象类)引用

一般用于定义一些函数库

接口

[修饰符] interface 接口名:[父类接口1,父类接口2....]

定义了一组行为与功能的协定,但没有提供实现方法。

具体实现方法由继承了该接口(或者说实现了该接口)的类定义,

接口不能实例化,接口中的成员(只能是函数成员)不能由修饰符修饰,默认是public abstract的,可以有多个成员

接口的使用:

例:

public interface IInterface

{void Method();}

class MyClass:IInterface

{public void Method();}

委托(粗浅认识)

[修饰符] delegate 返回类型 委托名称(参数)

委托是一种自定义数据类型,这个类型能够存储一类具有相同返回值与参数的方法

委托的使用:

1、与类的定义相似,首先定义并初始化一个委托类型变量(可以想象为对象)

例:

  static string Method1(string title)

  {Method1的方法体};

  static string Method2(string title)

  {Method2的方法体};

  delegate string myDelegate(string title)//定义一个委托类型

  myDelegate solution =new myDelegate(Method1);//初始化委托类型的变量solution

  solution(Method1方法参数);//通过solution使用Method1方法,返回的是Method1方法的结果

  solution=Method2;//将Method2方法赋值给委托变量

  solution(Method2方法参数);//通过solution使用Method2方法,返回的是Method2方法的结果

  ......

C#基础学习心得(二)的更多相关文章

  1. AspectJ基础学习之二搭建环境(转载)

    AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...

  2. 【笔记】MySQL的基础学习(二)

    [笔记]MySQL的基础学习(二) MySQL 老男孩  一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...

  3. opengl基础学习专题 (二) 点直线和多边形

    题外话 随着学习的增长,越来越觉得自己很水.关于上一篇博文中推荐用一个 学习opengl的 基于VS2015的 simplec框架.存在 一些问题. 1.这个框架基于VS 的Debug 模式下,没有考 ...

  4. JavaScript 基础学习(二)js 和 html 的结合方式

    第一种 使用一个标签 <script type="text/javascript"> js代码; </script> 第二种 使用 script 标签,引入 ...

  5. JavaScript 基础 学习 (二)

    JavaScript 基础 学习 节点属性 ​ 每一个节点都有自己的特点 ​ 这个节点属性就记录着属于自己节点的特点 1. nodeType(以一个数字来表示这个节点类型) ​ 语法:节点.nodeT ...

  6. Java基础学习笔记二十八 管家婆综合项目

    本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添 ...

  7. pytorch基础学习(二)

    在神经网络训练时,还涉及到一些tricks,如网络权重的初始化方法,优化器种类(权重更新),图片预处理等,继续填坑. 1. 神经网络初始化(Network Initialization ) 1.1 初 ...

  8. JS基础学习(二)

    昨天把网站上的基础知识看完了,下面是剩下的部分 第六节 JS Window浏览器对象模型 JavaScript全局对象,函数,变量均自动成为window对象的成员. 1.Window对象 1.获取浏览 ...

  9. salesforce 零基础学习(二十)简单APP制作

    本篇参考链接:https://developer.salesforce.com/trailhead/project/salesforce_developer_workshop 本篇讲述的是最简单的AP ...

随机推荐

  1. StackOverflow程序员推荐:每个程序员都应读的30本书

    “如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西.” 很多程序员响应,他们在推荐时也写下自己的评语. ...

  2. ASP.NET中多个相同name的控件在后台正确取值

    有兽,   页面上可能有多个相同name的Html表单控件,   一般在后台使用Request.Form[“name”]取值,并用‘,’分隔.   但是当值中包含逗号时,   取值就会出现异常,   ...

  3. Android--------解决ScrollView中嵌套ExpandableListView显示不全的问题

    ##***Scrollview和ExpandableListView嵌套显示不全*** - 当我们将ExpandableListView嵌套在Scrollview之中时,我们必须要确保我们的不居中Ex ...

  4. 数据结构c++语言描述——最大堆(MaxHeap)

    一.最大堆的插入 图9-3a 给出了一个具有5个元素的最大堆.由于堆是完全二叉树,当加入一个元素形成6元素堆时,其结构必如9-3b 所示.如果插入元素的值为1,则插入后该元素成为2的左孩子,相反,若新 ...

  5. 1228.1——计算器(未使用MVC设计模式)

    #import "ViewController.h"typedef enum{    kStausNum,    kStausOperation}kStaus; typedef e ...

  6. 8051、ARM、AVR

    arm精简指令集.可以安装嵌入式操作系统 8051复杂指令集 avr没落了

  7. MFC串口通信

    1.串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式). 同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程) ...

  8. uploadify ,前端页面获取值,json,ajax

    针对这几月的技术,做一次小总结 上传控件uploadify function inexel() { $("#btnExcel").uploadify({ 'method': 'po ...

  9. 在JS中得到表单中各项的值

    var form = document.getElementById("change");var pageNo = form.pageno.value;

  10. HTML5简单入门系列(四)

    前言 今天这篇内容主要讲述HTML 5 Web Worker(一种支持前端js多线程的技术). 工作线程(Web Worker) web worker介绍 W3C 在 HTML5 的规范中提出了工作线 ...