欢迎光临
我们一直在努力

C++程序员快速学习C#—(三)完-.NET教程,C#语言

建站超值云服务器,限时71元/月

八.类 

对于面向对象语言来说,类是重头戏,c#中类的使用和c++中类似,在细节方面有些差别. 

首先来看一个c#的类的例子: 

例: 

class myclass:mybasicclass   //注意基类不需要写限定符 

    { 

        private int a; 

        public int num() 

         { 

             return 0; 

         } 

    } 

public class mybasicclass 

    { 

    } 

这里写出了一个类的限定符public,c#还有的限定符: 

internal:只能在当前工程中使用,当class前缺省限制符时就默认为此限制符 

public:可以在任何工程中使用 

abstract (抽象的):类不能实例化,只能继承,可以有抽象成员 

sealed (密封的):不能继承 

关键字能够相互组合. 

首先需要知道一点,c#中只能有一个基类,它不支持多重继承,同时不允许派生类的可访问性比其基类更高,也就是说:内部类可以继承于公共类,反之不行,在前文也已经说过,object类是c#中最高的类,如果一个类没有基类,它就隐式的继承了object类,在类中都可以使用object提供的方法. 

也许你还记得在c++中,类里面定义的方法的具体实现是在类的外部实现的,但在c#中已经不允许,c#规定所有的代码都必须在类中,所以方法的代码就只能和c++中的内联函数的格式一样,但是切记,c#中的这样写法并不意味着是内联的,在c#中已经取消了内联函数的定义,.net会在编译的时候自动确定是否内联. 

从上面的例子中还能发现一个不同点就算是:在类定义结束的时候没有了分号; 

从现在开始,从细节上阐述c#的不同用法: 

1.       在c++的名词成员变量,在c#中称为字段,字段在c++中不能初始化,但在c#中可以直接初始化, 

2.       构造函数,它于c++使用相似,但是不允许在其中给字段初始化,c#还添加了一种静态构造函数 

public class mybasicclass 

    { 

        static mybasicclass() 

        { 

        } 

    } 

    它不需要限定符,它的作用是在程序运行是对静态变量进行赋值 

3.     析构函数:它和c++的概念已经完全不同了,因为c#内部有了内存自动收集机,能够对不用的内存进行回收,所以不需要在析构函数中释放内存了.也就无需析构函数,但是析构函数在派生于接口的类中函数有作用的,接口的概念后面会讲到 

4.     虚拟函数:c#的虚拟函数同c++在语法上有区别,但是含义还是一样的.c#中基类的虚拟函数使用关键字virtual 在派生类中使用override 

5.     运算符重载:c#中运算符重载和c++原理基本相同,但存在一些区别,区别在于有些运算符c#已经不允许重载了.不能重载的运算符有:-= , += , /= ,*= ,%=, 按位赋值运算符(&= ……) , 布尔运算符(&&……),赋值运算符(=).同时在c#中还有一个硬性的规定,比如重载了运算符> 就必须重载>= ,重载了== ,就必须重载 !=  反之毅然,当然不止这些还有< <= 等等 

九.异常 

c#和c++的异常基本相同: 

c#的异常语句: 

try 





    catch 





    finally 





它们的不同点最主要的就是,不管是否抛出异常,最后的finally块一定马上执行. 

十.不安全代码 

什么是不安全代码,前面我已经说过,使用指针就是不安全代码,在c#中是可以使用指针的,而且它和c++的格式一样,但是必须放在不安全代码段中. 

声名不安全代码段,使用关键字unsafe . 

例 

public unsafe int num() 



    return 0; 



不安全代码可以是方法,类,结构 

十一.接口 

在c++中是没有接口这个概念的.它是有com演变而来.一个c#接口只是函数和属性的定义.就好比一个抽象类.它的定义和类采用相似的语法.使用关键字interface 

类对接口的实现是通过派生来实现的,对于接口,类可以多重继承. 

后记. 

到这里我就准备停笔了,也许你会发现类以后的内容变的简单了,不详实了,的确这于我刚开始的初衷有些背离,但这也是有原因的.首先就是我在写第三篇的时候发现在<<c#高级编程>>一书的附录部分已经有了c++程序员过渡c#的内容,而且比较详细,大家可以参看此书,我只是把里面大家经常会用到的语法进行了阐述,对于一些不常用到,大家可以通过专门的c#书籍进行详细的了解.第二.在类之后的内容有许多讲的都是c++不具备的内容,这些内容的讲解也无法和c++进行比较来讲,所以也没有什么捷径,只能看c#的专业书籍进行学习,比如接口,委托,甚至类中的一些用法,还有我没有提到的属性,事件.通过此文学习可以在对c#一窍不通的情况下快速通过已学知识对其有所了解和掌握,但是一门语言是博大精深的,所以学习c#在此基础上还需要看一下经典的教程,对其有一个完全明了的深入理解,同时因为c#是建立在.net环境之下,所以对.net的机制也需要有一定的认识,最后我希望对c#有兴趣的朋友都能完美的掌握其精华,在.net的划时代历程上走出辉煌的一步. 

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » C++程序员快速学习C#—(三)完-.NET教程,C#语言
分享到: 更多 (0)

相关推荐

  • 暂无文章