【笔记篇】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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值