一、基础语法:
1.Console表示控制台;
2.输入:Console.ReadLine();
格式:string name;
name = Console.ReadLine();
3.输出:Console.WriteLine(); //这个自带换行
Console.Write();
4.占位符:类似于格式化输出
格式: string name = "sb";
Console.WriteLine("Hello,{0}",name);
5.Console.ReadKey(); // 暂停控制台,接收一个字符
6.@的作用:
①用在字符串前面,取消'\'的转义作用(多用于路径)
eg.string path = @"D:\C#\01";
②将字符串按照原格式输出
7.不同类型数据转换用Convert
eg. string a = "3.14", b = "12";
double x = Convert.ToDouble(a);
int y = Convert.ToInt32(b);
8.常量的定义:
const int MAX = 100;
9.二维数组的定义、初始化、取值
①定义:int[,] array = new int[3,4];//3行4列
②取值:array[1,2] = 3;
③三合一:int[,] array = new int[,]{ {1,2} , {2,3} , {3,4} };
10.函数GetLength()
获取该维数的长度
array.GetLength(0):行数
array.GetLength(1):列数
11.函数声明
static 返回值类型 函数名(参数列表)
12.ref参数
用法:static void add(ref int num)
{ num += 10;}
在主函数里调用add(ref num),num的值将会增加10
类似于C里面的 int &a;
13.out参数
用途:返回多个类型不同的值
用法:static void Number(int a,int b,out int sum,out double avg)
其中,a,b作为传入的参数,sum,avg作为传出的值
二、过渡阶段
1.string中split的用法
eg. string address = "中国|北京|海淀";
char[] c = new char[]{ '|' };
string[] ad = address.Split(c);
2.substring
①name.Substring(开始截取的位置); //到末尾
②name.Substring(开始截取的位置,截取的个数);
3.isNullOrEmpty
是string的方法
eg. string.isNullOrEmpty(name);
4.string可以直接当成字符数组用
eg. string str = "12314";
则str[2] = 3;
5.秒表Stopwatch类
用法:
Stopwatch sw = new Stopwatch();
sw.Start();
sw.Stop();
sw.Elapsed;//显示时间
6.枚举
定义:
public enum Week
{
星期一,
星期二,
星期三,
星期四,
星期五,
星期六,
星期天
}
用逗号隔开,最后一个不用
使用: Week day = Week.星期一;
7.结构体
定义:
public struct Person
{
public string name;
public int age;
}
用法:
Person person = new Person();
赋值和C一样
三、面向对象阶段
1.字段:相当于java里用private修饰的属性
2.属性:用来保护字段
eg.
public class Person
{
private int age;
private string name;
public int Age
{
get{ return age; }//取值
set
{
if(value > 100 || value < 0)
age = 18;
else
age = value;
}//赋值
}
}
用public修饰,get,set都要有,value是关键字,即传入的值
3.命名空间
相当于一个文件夹,把写好的脚本放入这个命名空间中,需要使用其中的脚本时,要在开始写using one(该命名空间的名字)
4.析构方法
用于回收一个对象,可以不写
定义: ~类名(){}
5.继承的使用
定义:
class 子类 : 父类
{
}
6.继承父类的构造方法
base代表父类,this代表子类
eg.
public Apple(int weight,Color color) : base(m_weight,m_color)
{
}
7.使用父类的属性,方法等
用base.属性(方法)
base相当于super
8.虚方法,也就是重写
用法:
在父类中:public virtual void Walk( ) { }
在子类中:public override void Walk()
{
base.Walk(); //可有可无
......
}
9.里氏转换原则
①子类对象可以直接赋值给父类变量
②子类对象可以调用父类中的成员,但父类只能调用自己的成员
③如果父类对象中装的是子类对象,可以将这个父类对象强制转换为子类对象
10.is和as
两个关键字都用于类型转换
is:转换成功,返回true,否则为false;
as:成功返回对应的对象,否则返回null;
11.抽象方法(无方法体)
public abstract void He llo();
也要在子类中用override重写
12.接口:抽象类中的方法都是抽象方法
接口名一般为“IXxx”,没有class
不能包含字段,但可以包含属性
不能有方法体,全为抽象方法,但不需要abstract修饰
不需要添加访问修饰符
使用方法:类似继承,用逗号隔开
13.自动属性,用于接口
如果没有限制的话
eg. public int Age{ get; set; }
14.类有两种修饰符:public 和 internal
默认是internal
internal的范围是项目内,在一个项目中时,与public一样
15.静态属性只能封装静态字段
16.静态构造方法
eg. static Person()
{
}
用来初始化类中的静态成员,只有static来修饰,没有参数
17.单例设计
class Person{}
①声明一个静态且私有的当前类型字段
private static Person instance;
②创建私有无参构造方法,保证外部无法实例化这个类
private Person( ) { }
③创建一个静态方法,用于创建此类的唯一对象
public static Person Instance()
{
if(instance == null)
instance = new Person();
return instance;
}
18.内部类
在一个类中再写一个类
用法:
Person.Web web = new Person.Web();
19.匿名类(一般是一组只读的属性,不能修改)
用法:
var mk = new {Name = "asd",Age = 19};
20.密封类
被sealed关键字修饰过的类不可以被继承
21.区域指令
#region Info
代码
#endregion
可以收缩代码
22.对象初始化器(简化构造方法)
格式:
类名 对象名 = new 类名( ){属性名 = 值;属性名 = 值};