C#与C++
来源:互联网 发布:现在学java前景怎么样 编辑:程序博客网 时间:2024/05/23 17:59
Ø 输入输出的不同
C++的输入时cin,输出为cout,而C#的控制台输入和输出(I/O)是Console.Read()/Console.ReadLine和Console.WriteLine()/Console.Write。
u Console.Read()/Console.ReadLine
Console.Read: Concole.Read()用于获取输入值的ASCII值,返回值是一个int类型
Console.ReadLine:Console.ReadLine() 用于获取字符串变量,返回值是string类型
u Console.WriteLine()/Console.Write
Write()和WriteLine()都是System.Console提供的方法,两着主要用来将输出流由指定的输出装置(默认为屏幕)显示出来.两着间的差异在Console.WriteLine()方法是将要输出的字符串与换行控制字符一起输出,当次语句执行完毕时,光标会移到目前输出字符串的下一行.至于Console.Write()方法,光标会停在输出字符串的最后一个字符后,不会移动到下一行。
Ø 程序结构
1)C#是一种对大小写字母敏感的语言,分号“;”是语句间的分隔符。与C++不同的是,C#当中声明代码文件(头文件)与实现代码文件(cpp文件)不是独立存在的,所有代码(类声明和类实现)都位于一个扩展名为cs的文件内。
2在C#当中的每样东西都被封装到一个类中,C#的类又被封装到一个命名空间当中(就象一个文件夹中的文件)。类似于 C++,main方法是你的程序的入口点。C++的main函数调用名称是"main",而C#的main函数是以大写字母M为起点的名称是"Main"。
Ø 命名空间
每一个类都被包装进一个命名空间。命名空间的概念与C++的完全相同,但在C#当中使用命名空间的频率较C++还高。
在.NET库当中,System是位于顶层的命名空间,别的命名空间都存在这个命名空间之下。默认状态下,存在一个全局的命名空间,因此一个在命名空间外定义的类将直接在这个全局命名空间之下;因此,你能在没有任何点限定符的情况下访问这个类。
C++当中的"#include"指示被C#的"using"关键字取代,它后面跟着一个命名空间的名字。正如上面的"using System"。"System"是别的所有被封装的命名空间和类中最底层的命名空间。所有对象的基类都是System命名空间内的Object类派生的。
Ø 变量
a)与C++不同,C#变量被访问之前必须被初始化;否则编译时会报错。因此,访问一个未初始化变量是不可能的事。
b)C#中你不会访问到一个不确定的指针。(C#已经把指针概念异化,限制更严格。所以有些资料上会说C#取消了指针概念)
c)一个超出数组边界的表达式是不可访问的。
d)C#中没有全局的的变量或全局函数,全局方式的操作是通过静态函数和静态变量来实现的。
Ø 数据类型
A.值类型
B.引用类型
u 值类型
值类型数据在栈中分配。他们包括:所有基本或内置类型(不包括string类型)、结构类型、枚举类型(enum type)
C#当中的类型范围与C++有所不同;例如,C++的long型是4个字节,而在C#当中是8个字节。同样地,bool型和string型都不同于C++。bool型只接受true和false两种值。不接受任何整数类型。
u 引用类型
引用类型包括class(类)、interface(接口)、数组、delegate(委托)、object和string。其中object和string是两个比较特殊的类型。object是C#中所有类型(包括所有的值类型和引用类型)的根类。string类型是一个从object类直接继承的密封类型(不能再被继承),其实例表示Unicode字符串
引用类型在堆中分配,当它们不再被使用时将被垃圾收集。它们使用new运算符来创建,对这些类型而言,不存在C++当中的delete操作符,根本不同于C++会显式使用delete这个运算符去释放创建的这个类型。C#中,通过垃圾收集器,这些类型会自动被收集处理。
u 值类型与引用类型的关系
可以把值类型与引用类型的值赋给object类型变量,C#用“装箱”和“拆箱”来实现值类型与引用类型之间的转换。
“装箱”就是将值类型包装成引用类型的处理过程。
“拆箱”操作与“装箱”相反,它是将一个object类型转换成值类型。
Ø 修饰符
在C++中存在三种访问修饰符:public、private和protected,而在C#里面存在
Ø 接口
一个接口就是一个抽象的基类,这个基类仅仅包含功能描述,而这些功能的实现则由子类来完成。C#中你要用interface关键字来定义象接口这样的类。.NET就是基于这样的接口上的。C#中你不支持C++所允许的类多继承(即一个派生类可以从两个或两个以上的父类中派生)。但是多继承方式可以通过接口获得。也就是说你的一个子类可以从多个接口中派生实现。
Ø 数组
C++相比,C#在数组语法上的特点如下:
A.方括号被置于数据类型之后而不是在变量名之后。
B.创建数组元素要使用new操作符。
C.C#支持一维、多维以及交错数组(数组中的数组)。
Ø 索引器
索引器:是C#引入的一个新型的类成员,它允许类或结构的实例按照与数组相同的方式进行索引。
索引器类型于属性,它们的不同之处在于索引器的访问器采用参数。
定义了索引器之后,就可以像访问数组一样,使用[]运算符访问类的成员。
定义索引器的方式与定义属性有些类似,其一般形式如下:
[修饰符] 数据类型 this<[数据类型 标识符]>
{
get{//获得属性的代码}
set{//设置属性的代码}
}
u 属性与索引器的比较
Ø 小结
作为编程语言,C#是现代的、简单的、完全面向对象的,而且是类型安全的。重要的是,C#是一种现代编程语言。在类、名字空间、方法重载和异常处理等方面,C#去掉了C++中的许多复杂性,借鉴和修改了Java的许多特性,使其更加易于使用,不易出错。
- C,C#与C++
- C C++与C#
- c与c#
- C#与C
- C与C#混合编程
- C与C#的区别
- C与C#的区别
- C, C++,C#的区别与联系
- C#与C++、Java之比较概览
- C#与C++、Java之比较概览
- C# 与 C 和 C++ 比较
- C#与C++、JAVA的区别
- c#与c、java的关系
- C#与C/C++数据类型对应关系
- C#与C/C++类型对照表
- C/C++ 与 C#混合编程
- PC使用C#与1214C通信
- C#与C++/CLI混合编程
- iOS获取系统键盘的高度
- 杨辉三角(c语言)
- JavaScript: 详解Base64编码和解码
- C++里static的用法
- IOSMD5加密算法
- C#与C++
- STM32F103 STM32F407 引脚配置 方法对比
- IOSUndefined symbols for architecture armv7s:解决之道
- CollectionUtils与StringUtils
- Android开源项目第二篇——工具库篇
- GCC options for ARM architectures
- 抽象类与接口
- VC++动态链接库(DLL)编程深入浅出(一)
- IOSsymbol(s) not found for architecture i386 解决办法