zoukankan      html  css  js  c++  java
  • C#之正则表达式、异常处理和委托与事件

    正则表达式主要是为了处理和模式匹配复杂的字符串。

    int myInteger = 5;

    string intergerString = myInteger.ToString();

    就是将myInteger调用int类型的ToString()函数将其转化成string类型的。而且string类还提供了很多对其进行操作的方法。

    String类还提供了subString()重载方法。

    Split()是获取字串的好方法,参数是一个用来分隔单词的字符数组。

    StringBuilder与String不同。StringBuilder是可变的,修改时改的是实际原字符串。可以将上述代码中的string output转换成StringBuilder output = new StringBuilder();

    这里面s1中,后面有个空格也被当成字串读出了。

     1、在哪里处理异常?在异常发生的地方还是让它冒泡到主程序?

    我们的原则:永远不处理你不知道怎么处理的异常,换句话说,永远不遮掩异常。

    下面的例子里面,我们在处理一个XML流,所以只捕捉XmlException,完全有可能在流里面发生其他异常,但注意不应该在这里处理它们,其实很可能我们也不知道怎么处理这些异常,多数情况下会轻易地丢弃它们。

    复制代码
    try
    {
        using (XmlReader topicReader = XmlReader.Create (xmlStream, readersetting))
        {
            // xml processing
        }
    }
    catch (XmlException ex)
    {
        // handler xml exception only
    }
    复制代码


    联系到一个常见的问题,集中处理异常还是分散处理?我们的经验,异常应该被捕捉在能处理它们的场合,否则你很可能掩盖它们。

    2、什么时候捕捉一般异常(Exception)?

    我们可以经常在代码里看到:

    复制代码
    try
    {
        // 
    }
    catch (Exception ex)
    {
        // empty code block
    }
    复制代码


    除了在主程序,永远不要捕捉它,除非你有特别的理由,因为你很可能违反了前一条,掩盖了你不知道的异常。但还是有少数情况,你需要捕捉它,一定特别说明,并在项目小组里一致通过。这个看似容易,其实很难(以我们的经验),程序员已经习惯了上述的写法,甚至变得不知道应该捕捉什么异常了,当有需要的时候,try catch block covers everything.

    委托和事件:

    1. 委托:一个能够表示方法的数据类型;它将方法作为对象封装起来,允许在运行时间接地绑定一个方法调用。

    2. 声明委托数据类型:

    public delegate  bool GreaterThanHandler(int first , int second);

    3. 委托的实例化:

    为了实例化委托,需要和委托类型自身的签名对应的一个方法;实例时不必用new来实例化该类的实例,直接传递名称即可[C>.0新语法]。 如:

    GreaterThanHandler a = 方法名;

    C>.0以前的语法:

    GreaterThanHandler a = new GreaterThanHandler (方法名) ;

    4. 匿名方法:

    匿名方法没有实际方法声明的委托实例,它们的定义是直接内嵌在代码中的。如:

    GreaterThanHandler a = delegate(int first , int second){return (first<second);};

    5. 委托的内部机制:

    C#将所有委托定义成间接派生于System.Delegate ,这个类有两个属性:(1)MethodInfo(System.Reflection.MethodInfo类型): 定义了一个特定方法签名(包括方法的名称、参数和返回类型) (2)Target(Object类型):对象实例,其中包含了要调用的方法。

  • 相关阅读:
    远程桌面无法复制粘贴
    软件无法启动,不提示具体错误
    从数据库统计出某张表中某个字段重复次数
    程序员何去何从
    SQL Server中TRUNCATE 和 DELETE的区别
    关于C#自定义控件注释说明
    C#的winform程序下如何实现文本编辑框(TextBox)的Hint提示文字效果
    ubuntu固定内网ip地址
    数据库的优化处理 Memory cached
    MYSQL管理之主从同步管理
  • 原文地址:https://www.cnblogs.com/lushilin/p/4442031.html
Copyright © 2011-2022 走看看