一、语言基础
1、VS .net C#
Console类:
WriteLine() Write()
ReadLine()
2、变量、数据类型、运算符
数据类型 变量名; 变量名 = 值;
int float double char bool string
byte sbyte
++ --
?:
const:常量
3、流程控制语句
选择语句
if..else
switch...case
循环语句
初始化 循环条件 循环操作 更新
for
while
do..while
do
{
}while(条件);
跳转语句
break
continue
goto
循环嵌套
4、方法
访问修饰符 [可选修饰符] 返回类型 方法名(参数列表)
{
方法体
}
public
protected
internal
private
static
abstract
virtual
override
sealed
void
类型
参数列表:数据类型 参数名1,数据类型 参数2,....
直接调用:方法名(参数);
类名调用:类名.方法(参数);
对象调用:对象.方法(参数);
ref:引用参数
out:输出参数
bool int.TryParse(string,out int)
方法的重载
5、数组
一位数组
int[] arr;
arr=new int[5];
arr[0]=1;
int[] arr=new int[5];
int[] arr=new int[]{1,2,3,4,5};
int[] arr;
arr=new int[]{1,2,3,4,5};
int[] arr={1,2,3,4,5};
int[] arr;
arr={1,2,3,4,5};//错误
常用算法:
累加求和
求平均
求最值
冒泡排序
数组的常用属性和方法
Length
Rank
Sort()
IndexOf()
二维数组:
int[,] arr=new int[3,4]{{1,2,3,4},{2,3,4,5},{3,4,5,6}};
交错数组:
int[][] arr=new int[3][];
arr[0]=new int[5];
foreach(元素类型 变量名 in 数组或集合)
{
//不能改变元素的值
}
参数数组
6、string StringBuilder
string的常用方法
Split()
Substring()
IndexOf()
LastIndexOf()
Insert()
Replace()
Join()
Format()
string的不可变性
StringBuilder
ApplendLine()
AppendFormat()
枚举
public enum 枚举
{
}
结构
public struct 结构
{
}
二、OOP
1、类和对象
类是对象的数据类型
类是抽象的 对象是具体的
构造函数:
this:当前实例
static
partial:分部类
创建对象
类名 引用 = new 构造函数();
2、类继承
父类 子类
基类 派生类
public class 子类:父类
{}
特性:单一继承 传递性
base
子类的构造函数默认调用父类的无参构造函数,可以使用base 显示调用父类的构造函数
public 子类构造函数(参数列表):base(实参)
{
}
抽象方法、抽象类
abstract
抽象方法:没有实现 只能在抽象类中定义 必须在非抽象子类中实现
抽象类:不能实例化 通常被继承 可以包含实现方法、虚方法、抽象方法
方法的重写:override
方法的签名和父类中相同
虚方法:有实现 除静态类、密封类之外的类中定义 可以在子类中重写
装箱拆箱:
装箱:值类型向object或其实现的接口的隐式转换
拆箱:object向值类型或接口向实现该接口的值类型的显示转换
隐藏方法:new
3、多态
父类类型指向子类对象时,重写方法 调用的是子类重写之后的 隐藏方法 调用的是父类的
密封方法 密封类
sealed
密封方法:不能被重写 sealed override
密封类:不允许被继承 不能包含抽象方法和虚方法
4、接口:行为的规范
interface
不能有实现
不能有字段
所有成员默认public abstract
实现类必须实现接口中的全部成员 添加public 不能使用override
如果不能实现,声明为抽象方法 类声明为抽象类
接口可以实现多继承
public class MyClass:父类,接口1,接口2,...
{
}
IComparable 方法: int CompareTo(object )
is:对象 is 类
子类兼容父类
as:强制类型转换 对象 as 类型 成功:对象 失败:null
命名空间:
5、属性 索引器
get、set访问器
public 类型 属性名
{
get
{
return this.字段;
}
set
{
this.字段 = value;
}
}
自动属性:读写属性
public 类型 this[数据类型 索引]
{
get
{
return this.数组[索引];
}
set
{
this.数组[索引]=value;
}
}
索引可以是任意数据类型
6、委托、事件
委托是一种引用数据类型,在命名空间中定义
public delegate 返回类型 委托(参数列表);
委托 dele=new 委托(方法名);
dele(参数);
dele+=方法名;
事件:定义在类中
public event 委托 事件名;
//注册
事件名+=方法名;
三、Framework
1、集合
System.Collections
ArrayList:动态数组
Hashtable:键值对
Stack:栈 后进先出
Queue:队列 先进先出
SoredList:按键排序
2、泛型
泛型类
泛型方法
泛型结构:Nullable<T>
默认值
T t = default(T);
约束
struct
class
base class
interface
new()
where T : 约束
泛型集合
List<T>
Dictionary<K,V>
WinForm
控件
事件
文件和流
System.IO
File FileInfo
Directory DirectoryInfo
DriveInfo
Stream
FileStream
StreamWriter
StreamReader
序列化
对象持久化
调试
异常处理
运行时错误
Exception及其子类
try
{
}
catch()
{
}
finally
{
}
内存管理
多线程
程序集
.exe .dll
程序集的引用
反射
System;
System.Reflection;
System.Type
System.Reflection.Assembly;
配置文件:App.config
<AppSettings>
<Add key="" value=""/>
</AppSettings>