C#语法杂碎笔记

来源:互联网 发布:windows ad域控 编辑:程序博客网 时间:2024/05/21 17:34
数组定义:
数组类型[] 数组名=new 数组类型[数组长度];
int[] a=new int[10];

string
所有的类型都能够转换成string类型,调用ToString()
ToCharArray();将字符串转换为char数组
new string(char[] chs):能够将char数组转换为字符串
字符串提供的各种方法
1)、Length:获得当前字符串中字符的个数
2)、ToUpper():将字符转换成大写形式
3)、ToLower():将字符串转换成小写形式
4)、Equals(lessonTwo,StringComparison.OrdinalIgnoreCase):比较两个字符串,可以忽略大小写
5)、Split():分割字符串,返回字符串类型的数组。
6)、Substring():解决字符串。在截取的时候包含要截取的那个位置。
7)、IndexOf():判断某个字符串在字符串中第一次出现的位置,如果没有返回-1、值类型和引用类型在内存上存储的地方不一样。
8)、LastIndexOf():判断某个字符串在字符串中最后一次出现的位置,如果没有同样返回-1
9)、StartsWith():判断以....开始
10)、EndsWith():判断以...结束
11)、Replace():将字符串中某个字符串替换成一个新的字符串
12)、Contains():判断某个字符串是否包含指定的字符串
13)、Trim():去掉字符串中前后的空格
14)、TrimEnd():去掉字符串中结尾的空格
15)、TrimStart():去掉字符串中前面的空格
16)、string.IsNullOrEmpty():判断一个字符串是否为空或者为null
17)、string.Join():将数组按照指定的字符串连接,返回一个字符串。

ArrayList,任意长度,任意元素
集合的长度问题
每次集合中实际包含的元素个数(count)超过了可以包含的元素的个数(capcity)的时候,
集合就会向内存中申请多开辟一倍的空间,来保证集合的长度一直够用。
ArrayList list = new ArrayList();

Hastable 键值对集合  字典
在键值对集合当中,我们是根据键去找值的。
键值对对象[键]=值;
*****:键值对集合当中,键必须是唯一的,而值是可以重复的
Hashtable ht = new Hashtable();
遍历 foreach循环 var类型

List泛型集合
List<int> list = new List<int>();

Dictionary字典
Dictionary<int, string> dic = new Dictionary<int, string>();

函数参数:
out、ref、params
1)、out参数。
如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组。
但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,
我们可以考虑使用out参数。
out参数就侧重于在一个方法中可以返回多个不同类型的值。
2)、ref参数
能够将一个变量带入一个方法中进行改变,改变完成后,再讲改变后的值带出方法。
ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
3)、params可变参数
将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理。
params可变参数必须是形参列表中的最后一个元素。

语法:
[public] class 类名
{
        Field字段;
     Property属性;
     Method方法;
}
实例化对象 new
属性的作用就是保护字段、对字段的赋值和取值进行限定。
属性的本质就是两个方法,一个叫get()一个叫set()。

静态类中只允许有静态成员,不允许出现实例成员。
静态成员必须使用类名去调用,而实例成员使用对象名调用。

public 构造函数
初始化对象(给对象的每个属性依次的赋值)
构造函数是一个特殊的方法:
1)、构造函数没有返回值,连void也不能写。
2)、构造函数的名称必须跟类名一样。
当写一个自己的构造函数之后,类中原有的默认无参数的构造函数会消失。

this关键字
1)、代表当前类的对象
2)、在类当中显示的调用本类的构造函数:this

继承
继承的符号:
子类构造函数问题
在子类中显示的调用父类的构造函数,使用关键字:base()

c#中的访问修饰符
public :公开的公共的
private:私有的,只能在当前类的内部访问
protected:受保护的,只能在当前类的内部以及该类的子类中访问。
internal:只能在当前项目中访问。在同一个项目中,internal和public的权限是一样。
protected internal:protected+internal
1)、能够修饰类的访问修饰符只有两个:public、internal。
2)、可访问性不一致。
子类的访问权限不能高于父类的访问权限,会暴漏父类的成员。

partial部分类
sealed密封类 
不能够被其他类继承,但是可以继承于其他类。

实现多态的手段
如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法来实现多态。
如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类。
1)、虚方法
步骤:
1、将父类的方法标记为虚方法 ,使用关键字 virtual,这个函数可以被子类override重新写一个遍。
2)、抽象类
当父类中的方法不知道如何去实现的时候,可以考虑将父类写成抽象类,将方法写成抽象方法。
抽象成员必须标记为abstract,并且不能有任何实现。
子类继承抽象类后,必须把父类中的所有抽象成员都重写(除非子类也是一个抽象类,则可以不重写)
抽象成员的访问修饰符不能是private
3)接口
[public] interface I..able
{
成员;
}
接口不能被实例化(不能new
接口中的成员访问修饰符为public,不能修改
接口中的成员不能有任何实现接口中只能有方法、属性、索引器、事件,不能有“字段”和构造函数。
实现接口的子类必须实现该接口的全部成员。

接口与接口之间可以继承,并且可以多继承。

装箱、拆箱
装箱:就是将值类型转换为引用类型。
拆箱:将引用类型转换为值类型。
看两种类型是否发生了装箱或者拆箱,要看,这两种类型是否存在继承关系。

序列化:就是将对象转换为二进制
 [Serializable]
反序列化:就是将二进制转换为对象
作用:传输数据。

委托
public delegate void DelTest();
=>lambda表达式

将创建文件流对象的过程写在using当中,会自动的帮助我们释放流所占用的资源。
using (FileStream fsWrite = new FileStream(@"new.txt", FileMode.OpenOrCreate, FileAccess.Write))

文件流
StreamReader   sr   =   new   StreamReader(你的 Stream);
StreamWriter   sw   =   new   StreamWriter(要写入的文件);
sw.Writer(sr.ReadToEnd()   );
sw.Flush();
sw.Close();
sr.Close();


0 0
原创粉丝点击