C# 和 C++ 的对比

不严谨,不权威,仅作为笔记^_^

C#没有头文件,使用using语句引入其它模块,如:

   using System.Windows;

C#里switch参数可以不是整形,C++里必须是整形,赞!

C#没有全局变量,所有东西都必须放到类里面,和java类似

C#不支持多重继承

C#可以将一个类分在多个文件中定义,加入partial关键字指示,如:

    public partial class App : Application

    {

           ...

    }

C#定义数组和对象后需要new 出来,定义出来的只是一个引用,不像C++,定义之后数组或对象已经创建了。比如:

  int a[] = new int[10];

C#定义值类型的变量不用new,比如下面这些:

    bool, int, char, uint ... ...

C#基本数据类型 

    bool, byte, char, decimal, double, float, int, long, sbyte, short, uint, ulong, ushort

    decimal是C++没有的,可以详细了解下。

C#用()来做类型转换,也可以用as来做强制转换,不抛异常。

C#注释"///",XML注释

C#动态变量类型,没有具体的类型,运行时检查,类似于php、lua里面的变量。

    dynamic d = 20;

C#有字符串类型,赋值时在字符串前面加@可以取消字符串中“\”的转义作用。

    string str = @"c:\windows"; 

C#中也有指针,但是用的较少。

C#的类有属性这个概念,提供了对私有字段的访问封装,以set和get接口实现对字段的封装。C++没有这个概念。

C#的数值变量自带类型转换的成员函数。如:

    float a = 10;

    int b = a.ToInt32

C#字符串转整形

    string str = "123";

    int a = int.Parse(str);

C#不抛出异常的转换,了解一下:int.TryParse(string s, out int i)

C# 循环语句基本上和C++一样,多了一个foreach,可以了解一下

    int[] a = new int[10];

    foreach (int b in a) 

    {

        ...

    }

C# 也用const定义常量

C# 算术运算符、位运算符、逻辑运算符同C++

C# 赋值运算符中<<=, >>=, &=, ^=, |=,不知道C++中有没有

C# typeof()返回class的类型,is判断是否为某一类型。

C# 访问修饰符

    public, private, protected,和C++一样

    多了internal, protected internal

C# 用ref声明引用参数 

C# 用out声明输出参数,感觉本质上和ref和差不多啊。

C# 可空类型(Nullable),和swift的那个什么好像啊。

C# ??运算符

    double? num1 = null;

    double num2 = num1 ?? 1.23 //num1如果为空的话,就返回1.23。

C# 声明数组

    double[] blance = new double[10];

C# Array是所有数组的基类,提供了用于各种数组的属性和方法

C# string 相加

C# String.Join, 将String数组中的元素用分隔符隔开,产生一个字符串。

string [] array={"abc", "def", "ghi"};
string a = string.Join("-", array);
// 此时 a="abc-def-ghi"

C# 字符串格式化

DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
string chat = String.Format("Message sent at {0:t} on {0:D}");

C# 结构体定义和C++基本一样,除了:

    不能定义析构函数,不能定义默认构造函数,不能继承,不能被继承,可以实现接口

    结构可以不用new 实例化

    结构是值 类型,而类是引用类型

C# 枚举和C++差不多。

C# 没有union类型

C# abstract关键字

C# 运算符重载

public static Box operator+ (Box b, Box c)
{
   Box box = new Box();
   box.length = b.length + c.length;
   box.breadth = b.breadth + c.breadth;
   box.height = b.height + c.height;
   return box;
}

C# 接口是个新东西,从C++角度来说,是一种特定的类,其特别之处在于:

    只负责声明不负责定义

    接口的成员不能有public, protected、internal、private修饰符,因为接口的方法都是要由继承者去实现的,必然是public的

    接口内不能有字段、构造函数

    接口内可以定义属性

    必须实现接口的所有方法。

C#子接口或类可以用new 来隐藏父接口中的同名方法。

待补充完善...

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值