一、Regular Expression
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace RegexTest
{
class Program
{
static void Main(string[] args)
{
string string1 = "This is a test string";
Regex theReg = new Regex(@"(\S+)\s");
MatchCollection theMatches = theReg.Matches(string1);
foreach (Match theMatch in theMatches){
Console.WriteLine("theMatch.Length: {0}", theMatch.Length);
if (theMatch.Length != 0)
Console.WriteLine("theMatch: {0}", theMatch.ToString());
}
}
}
}
使用正则表达式来进行模式匹配,例中查找(\S+)\s即一个单词,使用@防止转译。
注意using System.Text.RegularExpressions;
Match()返回一个对象,Matches返回所有符合对象。
. 任意单个字符char
* 大于等于0个任意字符
[a-f] a-f间任意单个字符
^a 任意a开始的字符串
z$ 任意z结尾的字符串
二、Exception
使用try或者throw抛出异常 catch处理异常,有些异常可以什么也不做,类似EndOfStreamException。异常并不是漏洞或错误,异常的处理很重要,而且异常很影响程序的性能。
try {double a = 5; double b = 0; DoDivide(a, b);}
catch (System.DivideByZeroException)
{…}
catch (System.ArithmeticException)
{…}
catch (Exception e)
{…}
public double DoDivide(double a, double b)
{
if (b == 0){throw new System.DivideByZeroException();}
if (a == 0){throw new System.ArithmeticException();}
return a / b;
}
finally
{
…//无论异常是否发生,这里的代码都会被执行
}
按照顺序catch并执行相应动作,finally内的语句始终执行。
三、Delegates & Events
委托类似之前学的指针,可以将方法封装方便调用。
delegate int Demo( int a, int b );
Demo test = new Demo(Class1.function());
test(1,2);
匿名:
Demo test = delegate(int a , int b){return (a == b);};