zoukankan      html  css  js  c++  java
  • 【笔记篇】C#笔记3

    笔记目录:http://blog.csdn.net/enzymii/article/details/77169928

    1. C#的接口有点意思,我们说过可以用来多重继承。。
    using System;
    
    namespace HelloWorld
    {
        interface IParentInterface
        {
            void add();
        }
    
        interface IMyInterface:IParentInterface //接口可以继承..
        {
            void minus();
        }
    
        class TwoNumber : IMyInterface, IParentInterface //接口还可以多重继承..
        {
            public void add()
            {
                Console.WriteLine("Add");
            }
    
            public void minus()
            {
                Console.WriteLine("Minus");
            }
        }
    
        class MainProcess
        {
            static void Main()
            {
                TwoNumber tw = new TwoNumber();
                tw.add();
                tw.minus();
            }
        }
    }
    

    尽管这东西之前也没接触过,但看过多态之后就比较明白,比较好理解了。。。
    1. namespace是没啥好讲的哈。
    2. 预处理器指令
    - #define会用,而且C#的#define好像适用范围比C++窄,比如不能用来压行。。。
    - #undef #else #elif都会
    - C++里我一般用#ifdef而非#if但好像一个道理就比较简单
    - #error和#warning我懂啥意思但没亲自用过
    可能就这些吧= =

    1. 下面就是令我头痛欲裂,看了好几遍都难以理解的“正则表达式”。。。
      今天看了一篇blog,讲得还不错,再加上我百度百科都看了好几遍,终于对正则表达式有了初步的理解。。这篇blog的链接我放一下:https://deerchao.net/tutorials/regex/regex.htm
      由于正则表达式我没有深刻理解,故不敢妄言。。
      正则表达式好像是用来匹配字符串的(乍一看,这不就是乱码嘛)。。在不少情况下有着非常良好的表现,.net框架中实现了一个正则表达式引擎。。
      然后就是背各种各样的要素了,这个还是用到的时候查表吧。。毕竟用的多自然就背过了。。

    2. 异常处理
      C#的异常处理比C++多了个finally关键字。。据说是用于不管是否抛出异常都要执行的语句。。
      try,throw,catch应该都是一样的。。。
      不过C#的异常是使用类来表示的= =
      有很多预定义的异常类,这个要去了解。
      比如:

        System.DividByZeroException //被零除异常

    然后还可以自定义异常= =
    举个栗子:

    using System;
    
    namespace HelloWorld
    {
        public class MinusException : ApplicationException
        {
            public MinusException(string message) : base(message)
            {
    
            }
        }
    
        class NumCheck
        {
            public int num = 0;
    
            public void Setnum(int x)
            {
                num = x;
            }
    
            public void Checknum()
            {
                if (num < 0)
                {
                    throw (new MinusException("The Num is Minus!"));
                }
                else
                {
                    Console.WriteLine("The Num is:{0}", num);
                }
            }
        }
    
    
        class MainProcess
        {
            public static void Main()
            {
                NumCheck x = new NumCheck();
                try
                {
                    x.Setnum(2);
                    x.Checknum();   //无异常
                    x.Setnum(-2);
                    x.Checknum();   //抛出异常
                    x.Setnum(2);
                    x.Checknum();   //无异常
                }
                catch(MinusException minus)
                {
                    Console.WriteLine("Exception:{0}", minus.Message);
                }
                finally
                {
                    Console.WriteLine("num:{0}", x.num);
                }
            }
        }
    }

    以上程序的运行结果为:
    这里写图片描述
    所以很明显,抛出异常之后try{}里剩下的代码不会运行,而finally里的会运行。
    所以基本就这样吧= =

    1. 文件I/O实在是太多了……等用到再慢慢研究吧= =

    本篇中还要学习的(话说之前欠下的我还没还呢):
    0. 今天学到的东西以前基本都没接触到过或是只学到了一些皮毛,要多加练习。。
    1. 使用一下自己没使用过的预处理器指令
    2. 正则表达式
    3. finally关键字、异常类
    4. 文件I/O

  • 相关阅读:
    第十三周课程总结
    第十二周课程总结
    第十一周课程总结
    第十周课程总结
    第九周课程总结&实验报告(七)
    第八周课程总结&实验报告(六)
    第七周课程总结&实验报告(五)
    第六周学习总结&java实验报告四
    2019秋Java学期课程总结
    2019Java第十四周课程总结
  • 原文地址:https://www.cnblogs.com/enzymii/p/8412142.html
Copyright © 2011-2022 走看看