C#基础语法补充
[学习笔记]前接:https://www.cnblogs.com/aland-1415/p/7360509.html
一、异常处理
1、格式
try{
}
catch{
}
catch{
}
...
finally{
} 抛出异常:
Catch(Exception e){
...
Throw e;
}
2、C#中的异常类主要直接或间接地派生于System.Exception类的。
System.ApplicationException 支持由应用程序生成的异常;
System.SystemException 所有预定义的系统异常基类,包含以下所有的类:
System.IO.IOException I/O异常;
System.IndexOutOfRangeException 方法指向超出范围的数组索引时生成的错误;
System.ArrayTypeMismatchException 数组类型不匹配异常;
System.NullReferenceException 处理依从一个空对象时生成的错误;
System.DivideByZeroException 处理当除以0时生成的错误;
System.InvalidCastException 处理类型转换期间生成的错误;
System.OutOfMemoryException 处理空闲内存不足错误;
System.StackOverflowException 处理栈溢出生成的错误;
二、文件的读写
1、一般文件读写
FileStream<object_name>=newFileStream(<fileName>,<FileMode Enumerator>,<FileAccess Enumerator>,<FileShare Enumerator>);
FileMode 参数有Append,Create,CreateNew(如果文件存在则抛异常),Open(如果文件不存在则抛异常),OpenOrCreate,Truncate(文件不存在抛异常,打开文件会重新写入,但会保留文件的初始创建日期);
FileAccess 参数有Read,ReadWrite,Write;
FileShare 参数有Inheritable,None,Read,ReadWrite,Write,Delete;
2、System.IO 命名空间中常用非抽象类:
BinaryReader 二进制流读取数据;
BinaryWriter 二进抽格式写入数据;
BufferedStream 字节流的临时存储;
Directory 有助于操作目录结构;
DirectoryInfo 对目录执行操作;
DriveInfo 驱动器信息;
File 有助于处理文件;
FileInfo 对文件执行操作;
FileStream 用于对文件中任何位置的读写;
MemoryStream 用于随机访问存储在内存中的数据流;
Path 对路径信息执行操作;
StreamReader 从字节流中读取字符;
StreamWriter 向一个流中写入字符;
StringReader 读取字符串缓冲区;
StringWriter 写入字符串缓冲区;
3、例:
FileString fs = new FileStream("fileName",FileMode.Append,FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("Hello!");
sw.Close();
fs.Close();
三、正则表达式
1、匹配规则
[character_group] 取其中一个字符,也可用-号来确定一个范围;
\w 任何单词字符;
\W 任何非单词字符;
\s 任何空白字符;
\S 任何非空白字符;
\d 十进制数字;
\D 非十进制数字
\p{name} 与name指定的Unicode通用类别或命名块中的任何单个字符匹配
\P{name} 与不在name指定的Unicode通用类别或命名 ^ 从字符串或一行的开头处开始匹配,如果是在[ ] 内则表示“非”
$ 从字符串或行的结尾处开始匹配;
\A 匹配必须出现在字符串的开头;
\Z 匹配必须出现在字符串的末尾,用法同$;
\G 匹配必须出现在上一个匹配结束的地方;
\b 匹配一个单词边界;
\B 匹配非单词边界; * 贪婪匹配{,∞}
+ 贪婪匹配{,∞}
? 贪婪匹配{,}
{n} 匹配一个元素n次;
{n,} 贪婪匹配一个元素n次以上;
{n,m}贪婪匹配一个元素至少n次,最多m次
(以上限定符后跟一个?就表示非贪婪匹配,即尽可能少的匹配) (subexpression) 捕获匹配子表达式,并将其分配到一个从零开始的序号中;
(?<name>subexpression) 将匹配的子表达式捕获到一个命名组中; \number 反向引用。匹配编号子表达式的值;
\k<name> 命名反向引用。匹配命名表达式的值; $number 按组number替换匹配的字符串;
${name} 按命名组name匹配子字符串;
$$ 替换$字符;
$& 替换整个匹配项的一个副本;
$` 替换匹配前的输入字符串所有文本;
$' 替换匹配后的输入字符串的所有文本;
$+ 替换最后捕获的组;
$_ 替换整个输入字符串; (?imnsx-imnsx) 在模式中间对诸如不区分大小写这样的选项进行设置或禁用;
(?#注释) 内联注释;
2、Regex类(用于表示一个正则表达式);
public bool IsMatch(string input) 指示Regex构造函数中指定的正则表达式是否在指定输入字符串中找到匹配;
public bool IsMatch(string input,int startat) 指示Regex构造函数中指定的正则表达式是否在指定输入字符串中找到匹配,从字符串中指定的开始位置开始;
public static bool IsMatch(string input,string pattern) 指示指定的正则表达式是否在指定的输入字符串中找到匹配项;
public MatchCollection Matches(string input) 在指定的输入字符串中搜索正则表达式的所有匹配项;
public string Replace(string input,string replacement) 在指定输入字符串中把所有匹配正则表达式模式的所有匹配字符串替换为指定的替换字符串;
public string[] Split(string input) 把输入字符串分割为子字符串组;
四、多线程(System.Threading.Thread)
1、System.Threading.Thread 类属性:
CurrentContext 获取线程正在其中执行的上下文;
CurrentCulture 获取或设置当前线程的区域性;
CurrentPrinciple 获取或设置线程的当前负责人;
CurrentThread 获取当前正在运行的线程;
CurrentUICulture 获取或设置资源管理器使用的当前区域性以便在运行时查找区域性特定资源;
ExecutionContext 获取一个ExecutionContext对象;
IsAlive 获取当前线程的执行状态;
IsBackground 判断线程是否为后台运行;
IsThreadPoolThread 获取一个值,该值指示线程是否属于托管线程池
ManagedThreadld 获取当前托管线程的唯一标识符;
Name 获取或设置线程名称;
Priority 获取线程调试优先级值;
ThreadState 获取线程当前状态;
2、System.Threading.Thread方法:
Start() 开启线程;
Sleep() 暂停线程;
Abort() 销毁线程
Interrupt() 中断处于WaitSpleepJoin线程状态线程;
Join() 在继续执行标准的COM和SendMessage消息处理期间,阻塞调用线程,直到某个线程终止为止;
BeginCritical
五、事件(event)
1、事件使用“发布-订阅(publisher-subscriber)模型
发布器:是一个包含事件和委托定义的对象,事件和委托之间的联系也定义在这个对象中。发布器类的对象调用这个事件,并通知其他对象;
订阅器:是一个接受事件并提供事件处理程序的对象。在发布器类中委托调用订阅器类中的方法
2、声明事件:
public delegate void BoilerLogHandler(string status);
public event BoilerLogHandler BoilerEventLog;
相当于把BoilerEventLog这个事件绑定在delegate上了,它既是一个委托BoilerEventLog(string a)也是一个事件BoilerEventLog;
六、补充内容
1、特性(Attribute)
用于在运行时传递各种元素的行为信息的声明性标签,通过放置在它所应用的元素前面的[]号来描述;
AttributeUsage
Conditional
Obsolete
2、属性(property)
即set,get方法,且两个方法都没参数也没有小括号,使可以访问和修改private属性;
抽象类也可以拥有抽象属性,这些属性在子类中应被实现;
例:
public abstract int A
{
set;
get;
}
3、索引器(indexer)
允许一个对象可以像数组一样被索引,可以使用[]来访问类的实例;
一维索引器语法:
elementType this[int index]
{
get
{
//返回index指定的值
}
set
{
//设置index指定的值
}
}
索引器可以被重载,且可以是不同类型的多维参数;
4、委托(delegate)
声明委托(相当于新建一个类): delegate <return type> <delegate-name> <parameter list>;
一旦声明了委托类型,委托对象必须使用new来创建,创建时的参数是一个具有相同类型参数和返回数据类型的方法名,然后可用这个new的名字来代替这个方法进行使用;
多播:委托对象可使用“+”运算符进行合并,但只有相同类型的委托可合并,“-”可用于从合并的委托中移除组件;多播可以完成一次调用多个方法的目的;
一个类中的多个方法可只新建一个委托对象,其他方法用“+”进行合并;
5、匿名方法
没有名称中有主体,匿名方法不需要指定返回类型,通过delegate关键字创建委托实例来声明
delegate void NumberChange(int n);
NumberChange nc = delegate(int x) //匿名委托实例
{
Console.WriteLine(" ");
}
6、泛型(Generic)
通过使用System.Collections.Generic后可使用泛型
使用时在类名后加一个<name>来代替一种数据类型,在要具体实例一种数据时将name换成相应的数据名即可;
泛型委托: delegate T NumberChange<T>(T x);
C#基础语法补充的更多相关文章
- Java基础知识二次学习-- 第二章 基础语法与递归补充
第二章 基础语法与递归补充 时间:2017年4月24日10:39:18 章节:02章_01节,02章_02节 视频长度:49:21 + 15:45 内容:标识符,关键字与数据类型 心得:由字母,下 ...
- JavaScript学习笔记-基础语法、类型、变量
基础语法.类型.变量 非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或 ...
- Swift基础语法学习总结
Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift ...
- swift3.0基础语法
swift 3.0 基础语法 目录 01-变量和常量 02-运算符 03-可选项 04-条件语句 05-循环 06-字符串 07-元组 08-数组 09-字典 10-对象和类 11-枚举 12-属性 ...
- Python3 与 C# 基础语法对比(就当Python和C#基础的普及吧)
文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 多图旧排版:https://www.cnblogs.com/dunitian/p/9 ...
- 基础运算符补充,流程控制之if判断/while循环
常量 常量即指不变的量.在python中没有一个专门 的语法代表常量,程序员约定俗成地用变量名全部被大写代表常量. AGE_OF_OLDBOY = 56 基础运算符补充 1.算术运算 加减乘除+ - ...
- JavaSE入门学习7:Java基础语法之语句(下)
继续接着Java基础语法来:JavaSE入门学习5:Java基础语法(一)和JavaSE入门学习6:Java基础语法(二). 语句 Java经常使用的3种循环:while.do...while,for ...
- Hive学习笔记:基础语法
Hive基础语法 1.创建表 – 用户表 CREATE [EXTERNAL外部表] TABLE [IF NOT EXISTS 是否存在] HUserInfo ( userid int comment ...
- JavaScript的基础语法
对于Javascript的而言没有数据类型的全部都是通过var来定义创建的.比如: <!DOCTYPE html> <html> <head> <meta c ...
随机推荐
- C++程序运行时间测定
From:http://www.cnblogs.com/killerlegend/p/3877703.html Author:KillerLegend Date:2014.7.30 此处程序的测试时间 ...
- A Gentle Guide to Machine Learning
A Gentle Guide to Machine Learning Machine Learning is a subfield within Artificial Intelligence tha ...
- List(JDK1.7)(3)
Vector 实现了一个存储对象的增长数组.如同一个数组,它可以使用一个整型下标来访问元素.但是,vector的大小是可以根据需要增长或收缩的. 每个vector通过维护capacity和capaci ...
- Python入门系列教程(五)函数
全局变量 修改全局变量 a=100 def test(): global a a=200 print a 多个返回值 缺省参数 def test3(a,b=1): print a,b test3(a) ...
- 天梯赛 L2-002. (模拟) 链表去重
题目链接 题目描述 给定一个带整数键值的单链表L,本题要求你编写程序,删除那些键值的绝对值有重复的结点.即对任意键值K,只有键值或其绝对值等于K的第一个结点可以被保留.同时,所有被删除的结点必须被保存 ...
- Sublime遇见中文乱码问题?
今天在写demo的时候,突然发现html页面上的中文在浏览器上显示乱码~!!!!! 这时,我根据网上的提示安装了两个插件:converttoUtf-8,support Gbk ~~~然而,好像无济于事 ...
- [转]CNN 中千奇百怪的卷积方式大汇总
https://www.leiphone.com/news/201709/AzBc9Sg44fs57hyY.html 推荐另一篇很好的总结:变形卷积核.可分离卷积?卷积神经网络中十大拍案叫绝的操作. ...
- XSS练习小游戏和答案参考
源码:https://files.cnblogs.com/files/Eleven-Liu/xss%E7%BB%83%E4%B9%A0%E5%B0%8F%E6%B8%B8%E6%88%8F.zip 感 ...
- python进阶之类常用魔法方法和魔法属性
前言 前面我们总结过了python的关键字.运算符.内置函数.语法糖等与python魔法方法之间的关系,现在我们更细一点,看看python的面向对象编程有哪些常用的魔法属性和魔法方法. 魔法属性 对于 ...
- oracle用plsql查询死锁
1. 点击plsql 工具(tool),点击会话(session) 2.点击锁,可以看到锁的session