C#基础学习心得(二)
索引器
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#基础学习心得(二)的更多相关文章
- AspectJ基础学习之二搭建环境(转载)
AspectJ基础学习之二搭建环境(转载) 一.下载Aspectj以及AJDT 上一章已经列出了他的官方网站,自己上去download吧.AJDT是一个eclipse插件,开发aspectj必装,他可 ...
- 【笔记】MySQL的基础学习(二)
[笔记]MySQL的基础学习(二) MySQL 老男孩 一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...
- opengl基础学习专题 (二) 点直线和多边形
题外话 随着学习的增长,越来越觉得自己很水.关于上一篇博文中推荐用一个 学习opengl的 基于VS2015的 simplec框架.存在 一些问题. 1.这个框架基于VS 的Debug 模式下,没有考 ...
- JavaScript 基础学习(二)js 和 html 的结合方式
第一种 使用一个标签 <script type="text/javascript"> js代码; </script> 第二种 使用 script 标签,引入 ...
- JavaScript 基础 学习 (二)
JavaScript 基础 学习 节点属性 每一个节点都有自己的特点 这个节点属性就记录着属于自己节点的特点 1. nodeType(以一个数字来表示这个节点类型) 语法:节点.nodeT ...
- Java基础学习笔记二十八 管家婆综合项目
本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添 ...
- pytorch基础学习(二)
在神经网络训练时,还涉及到一些tricks,如网络权重的初始化方法,优化器种类(权重更新),图片预处理等,继续填坑. 1. 神经网络初始化(Network Initialization ) 1.1 初 ...
- JS基础学习(二)
昨天把网站上的基础知识看完了,下面是剩下的部分 第六节 JS Window浏览器对象模型 JavaScript全局对象,函数,变量均自动成为window对象的成员. 1.Window对象 1.获取浏览 ...
- salesforce 零基础学习(二十)简单APP制作
本篇参考链接:https://developer.salesforce.com/trailhead/project/salesforce_developer_workshop 本篇讲述的是最简单的AP ...
随机推荐
- 在Qt中用QAxObject来操作Excel
目录(?)[+] 下一篇:用dumpcpp工具生成的excel.h/excel.cpp来操纵Excel 最近写程序中需要将数据输出保存到Excel文件中.翻看<C++ GUI Pro ...
- Android 开源框架
不推荐使用UltimateAndroid.KJFrameForAndroid.ThinkAndroid.Afinal.xUtil等这种集成网络请求.图片加载.数据库ORM.视图依赖注入.UI框架等的集 ...
- 移动前端开发之 viewport 的深入理解
移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用,才能更好地让我们的网页适配或响 ...
- 利用MetaWeblog API 自制博客发布小工具
博客园提供了诸多数据接口, 利用这些接口可以很容易的实现博客的发布,修改,删除等 1.需要引用一个DLL:为CookComputing.XmlRpcV2 2.新建一个类,在其中是一些要实现的东西,如: ...
- Android HttpClient框架get和post方式提交数据(非原创)
1.fragment_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android& ...
- Java实现的 线程池
由于最近开始学习java,用到了线程池,按照之前c++的写法写出此java版的线程池 TaskRunnale实现相关任务的接口,具体要实现什么任务在相应的run函数中实现. package threa ...
- (原)在ubuntu 中安装 swi prolog 和 简单的使用
参考网址:http://www0.cs.ucl.ac.uk/staff/mahmed/teaching/intro.html 参考网址:http://www.swi-prolog.org/build/ ...
- YII Framework学习教程-YII的Model-开发规范-路径别名-命名空间
到这里,大概的YII开发已经基本可以,但是下面要将的所有课程,学完之后可以让你更爱YII.下面的教程是讲的MVC的M,model.数据,业务,代码的集中地区.所以开始之前,学学开发规范-路径别名-命名 ...
- 工作中小知识点汇总(c#)
1.OOP 实体与数据库字段转换(注意 此时实体字段必须和数据库中查询的字段列名相同) list = ModelExtend.GetByDataTablePart<EZRate>(ds.T ...
- 安卓手机用-----Exchange Activesync---同步Gmail日历联系人
微软Exchange Activesync是一个跨平台的移动设备同步协议 支持很多手机操作系统,比如诺基亚的塞班.黑莓的palm.WindowsMobile.Iphone.安卓等.这些手机上都可以用这 ...