面向对象 类:动物、 人; 对象:小明;
封装安全简洁 继承节约多态(李氏替换 显示隐氏) 多态
一。
1.快捷键 shift+alt+f10//导入命名空间ctrl+e+f设置文档格式
二。
1. sizeof()查看数据类型大小
2. name.getType().tostring()//获取是什么类型
name.GetType().BaseType.toString()//父类什么类型
三。1.数据类型转换string变int int.pase();
//有2. Convert.ToInt32();
2.如果Person BeatStudent:Student Student:Person
那么Person p=new BeatStudent();//向下类型转换隐式转换(显示)
BeatStudent bs=p as BeatStudent;//向上类型转换向上转换用as(隐士)
if(bs!=null) { }
3.params//可变参数(int a,int b,params int c) ### 1.必须方最后可传值可不传可传null所以要判断是否为空
4.out/ref//引用类型传递out使用后要在方法中赋值还可以将值类型改变
四。集合
1.ArrayList ,List//add()添加inset(index,na)//第几个填入什么内容[0]获取Count有多少addrange()添加一个集合reamerAt(index)删除第几个
sort()排序方法reverse()反转contains("ss")//判断是否包涵toarray()转换为数组//sort排序详解有一个不带参数的实现类的内容排序要在判断的类中实现IComparable
而有参数的实现时要传入一个实现了IComparer的类sort(new icom());
2.Hashtable, Dictionarryadd("","");键值键不可以重复
3.foreach只读
4.可以遍历类但是要写一个方法实现一个借口
五。文件流
Directory目录
File文件
FileStream fswWrite=new FileStream("first.txt",FilMode.create,FileAcces.Write);//第一个是文件名,第二个文件模式Append加到文件后面,create覆盖,第三个参数是判断读写模式
Byte[] byt = System.Text.Encoding.UTF8.GetBytes(name);//将string转换为byte型
注意:文件流读写第二个参数要改变入读open写appde
#region 流读 using (FileStream file = new FileStream("C:/Users/张佳辉/Desktop/c#/path/A0/abc0.txt", FileMode.Open , FileAccess.Read)) { Byte[] byt = new Byte[file.Length]; file.Read(byt, 0, byt.Length); string ms = System.Text.Encoding.UTF8.GetString(byt); Console.WriteLine(ms); } #endregion #region 流写 using (FileStream file = new FileStream("C:/Users/张佳辉/Desktop/c#/path/A0/abc0.txt", FileMode.Append, FileAccess.Write)) { string name = "互联网互联网"; Byte[] byt = System.Text.Encoding.UTF8.GetBytes(name);//将string转换为byte型 file.Write(byt,0,byt.Length); } #endregion
六。正则匹配
Math math=Regex.Math(mse,".+?");写正则?可以终止贪婪模式按最少匹配
C#中使用正则方法
Regex.IsMatch(字符串,正则)用来确定给定的字符串是否匹配正则
Regex.Math(字符串,正则)从给定的字符串中匹配一个符合正则提取不要加^和$
Regex.Maths(字符串,正则)从给定的字符串中匹配所有符合正则提取不要加^和$
regex.replace(字符串,正则)替换所有字符串为另一个
1.Math math=Regex.Math(字符串,正则)//math.value//表示结果
2.MathCollection math=Regex.Maths(字符串,正则)//foreach(match item in matchs) 循环math.value//表示结果//表示结果//item.Groups[1].value//Group[1]表示第一个()组;
3.WebClient//访问web服务器类
WebClient client=new WebClient();//访问web服务器类
string html=client.DoewnLoadSrting("网页地址");//DoewnLoadSrting下载网页
七。委托(delegate)是一种数据类型把变化的东西封装起来传递的是类
八。反射 通过反射可以获取对象的程序集
1.type public class Myclass { } //通过type获取对相
Myclass m=new Myclass();
Type typeMyClass=m.gettype(); //如果没有创建对象
Type typeMyClass=typeof(Myclass); //获取类里的所有字段信息
FieldInfo[] fields=typeMyClass.GetFidelds();
for(){ fields[i].name } //获取类里的所有属性信息 P
ropertyInfo[] fields=typeMyClass.GetProperties();
for(){ fields[i].name
}
2.Assembly动态加载程序集
//获取程序集
Assembly asm=Assebly.loadFile("");//路径是绝对路径(是一个类库) //获取程序集中的所有类型 Type[] types=asm.GetTypes(); for(int i=0;i<types.Length;i++){ types[i].FullName } //获取程序集中所有的public类 Type[] types=asm.GetExportedTypes(); for(int i=0;i<types.Length;i++){ types[i].FullName } //获取class为person的type类Invoke()调用方法 Type typePerson = asm.GetType("_07TestDll.Person"); //调取person的SayHi方法 MethodInfo method = typePeson.GetMethod("SayHi"); //创建一个As的对象 //通过type // Activator.CreateInstance方法创建对象 Object objects = Activator.CreateInstance(clas1); method.Invoke(objects,null); Console.WriteLine(method); //调用重载方法 MethodInfo cz = clas1.GetMethod("Aa",new Type[]{typeof(string)}); cz.Invoke( Activator.CreateInstance(clas1),new Object[]{"大家好"}); 3.隐式类型 var p=new {name="jdnck",age=18}; //隐式类型只能读取不能赋值 4.扩展方法 //扩展方法 //必须用this关键字指定方法或属性必须在静态类里 #region 扩展方法 Myclass my = new Myclass(); my.query(); string n="大家好"; Console.WriteLine( n.Count()); #endregion public static class Dass { //为string类型的n创建扩展方法 public static int Count(this string n) { return n.Length; } public static void query(this ConsoleApplication6.Program.Myclass my) { Console.WriteLine("好开兴"); } }
九。xml标记性语言描述数据
十。自定义泛型
*重新定义this可以改变类的应用
泛型类,泛型接口,泛型实现方法
class Program { static void Main(string[] args) { Myclass<string> classs = new Myclass<string>(); classs[0] = "开心"; classs[1] = "你好"; } } public class Myclass<T> { public T[] _date = new T[5]; public T this[int index] { get { return _date[index]; } set { _date[index] = value; } }