1、强制转换
2、里氏转换
· 父类变量存子类对象,父类强制转化成对应子类
myBase =new MySub(); //对象存储在一个堆内存中,变量myBase在栈里//引用类型的变量在32位计算机中只占4个字节
3、装箱拆箱
·将值类型赋值给引用类型
· 将引用类型强制转换成值类型
object o=123//123在栈里,o指向堆中
4、HashSet<> 不允许出现重复的!
5、Dictionary效率高
·List慢的原因:一个个遍历
· Hash算法
要求一个函数,可以将一个数字变成一个指定范围的数字
<object>.GetHashCode//每一个对象都可转变成一个数字
哈希函数将一个不可预计的数字映射到一个较小范围
取,只需要根据哈希函数算出地址,直接取出来
6、国家标准GB2312: 一个汉字=2个字节
UTF-8 : 一个汉字=3个字节
7、序列化BinaryFormatter
8、值传递,方法内外不同变量(只是值相同而已)
引用传递,方法内外变量相同
9、xml大小写敏感
<!--注释-->
-> DOM(Document object model, 文档对象模型)
将文档看成文档对象,里面的所有东西都是节点对象
-> 传统类库:XmlDocument系 -> Linq to XML:XDocument系
-> 序列化技术
-> 事件驱动
XmlTextReader
XmlTextWriter
10、正则表达式
是一个用于匹配、提取、替换用的包含元字符的字符串
->学习元字符
->基本元字符
. 任意的一个非换行字符
[..] 匹配括号中的任意字符
| a或b,敏感词
() 提高优先级,实现分组
->限定元字符
+ 紧跟在+前面的字符出现至少一次
* 紧跟在+前面的字符出现任意次数
?紧跟在?前面的字符出现或不出现即0次或1次
->首尾元字符
^ 判断是否以某某字符开头,^[0-9]
在集合匹配中表示否定 ^[^0-9]
$ 必须使用某某字符结尾 :Linux.+pdf$
一般需要一起使用:
^[0-9]+$
在分组中表示引用的分组
->简写元字符
\d 匹配数字 \D匹配非数字
\w(正常的文字,例如abc和下划线_,在C#中包括中文)
\W 匹配非单字符
\s匹配空白字符 \S匹配非空白字符
11、C#中操作正则表达式
->命名空间 System.Text.RegularExpression
->Regex
bool IsMatch (正常字符串,正则表达式)
MatchCollection Matches(正常字符串,正则表达式)
string Replace(正常字符串,正则表达式,替换字符)
Match Match(string,string);
MatchCollction Matches(string,string);
12、xml
->root.Elements() 返回子节点
->root.Descendants() 返回无差别所有子节点(后代)
->Name(名字与命名空间)与LocalName(名字)
13、正则表达式Group
如果在提取的过程中希望得到匹配项,同时需要匹配项中的某一个部分时,只需要用圆括号将需要部分括起来。
1)根据需要加圆括号进行分组,
2)从左边往右边数(,并从1开始!!
3)当匹配完成后使用Group[i],即可访问所以的内容
文件路径: @"(([a-zA-Z]:).*\\)((.+)(\..+))";