热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C++程序员快速学习C#---(三)完

原创我的网址http:blog.csdn.nethsuyuan如有错误请指正八.类对于面向对象语言来说,类是重头戏,C#中类的使用和C++中类似,在细节方面有些

原创  我的网址 http://blog.csdn.net/hsuyuan/  如有错误请指正

.

对于面向对象语言来说,类是重头戏,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#是建立在.net环境之下,所以对.NET的机制也需要有一定的认识,最后我希望对C#有兴趣的朋友都能完美的掌握其精华,.net的划时代历程上走出辉煌的一步.


推荐阅读
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文深入探讨了C++对象模型中的一些细节问题,特别是虚拟继承和析构函数的处理。通过具体代码示例和详细分析,揭示了书中某些观点的不足之处,并提供了更合理的解释。 ... [详细]
  • 深入了解 Windows 窗体中的 SplitContainer 控件
    SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 本文详细介绍了C语言中的指针,包括其基本概念、应用场景以及使用时的优缺点。同时,通过实例解析了指针在内存管理、数组操作、函数调用等方面的具体应用,并探讨了指针的安全性问题。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 编写了几个500行左右代码的程序,但基本上解决问题还是面向过程的思维,如何从问题中抽象出类,形成类的划分和设计,从而用面向对象的思维解决问题?有这方面的入门好书吗?最好是结合几个具体的案例分析的 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • SQLite 动态创建多个表的需求在网络上有不少讨论,但很少有详细的解决方案。本文将介绍如何在 Qt 环境中使用 QString 类轻松实现 SQLite 表的动态创建,并提供详细的步骤和示例代码。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
author-avatar
瑞风大姑娘_214
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有