栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C#和C++的区别

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#和C++的区别

C#背记(面试整理)
  • C++给开发者的选项更加底层,C#不具备这些选项,但更安全
  • C#基于CLR【公共语言进行时】
数据类型的作用

1,存储指定长度的数据,向系统申请指定长度的内存

2,存储指定类型的数据(一个字节包括8个bite位)

C#中的整形 (有符号整形)

int 2的31次方~2的负31次方

short 2的15次方~2的负15次方

Sbyte 2的7次方~2的负7次方

long 2的63次方~2的负63次方

(无符号整形-都是正数)

uint 2的31次方

ushort 2的15次方

byte 2的7次方

ulong 2 的63次方

C#中的浮点型

float 4字节

double 8字节

C#中的bool 型

bool 1字节 用来存放true false

C#中的字符型

Char 2字节

C#中的类型转换
  1. 占用内存较长的变量,转换成占用内存较少的变量需要强转,在变量前添加目标类型,可能出现数据变更
  2. 占用内存较少的变量,转换成占用内存较多的变量不需要强转
  3. 高精度转低精度数据类型需要强转
  4. 低精度转高精度不需要强转
  5. 字符转算术数据不需要强转——保存的是ASCII码
  6. 算术数据转字符需要强转——保存的是ASCII码对应的字符
  7. 算术数据类型转string 需要通过ToString( )或者""+变量
  8. char 转string 不需要强转
  9. string 转算术数据类型 需要通过Prase(字符串)
值类型和引用类型的区别
  1. 值类型的数据存储在栈区,引用类型的数据存储在堆区,而内存单元中只存放堆中对象的地址
  2. 值类型存取速度快,引用类型存储数据慢
  3. 值类型表示实际数据,引用类型表示指向存储在堆中的数据的指针或引用
  4. 值类型继承于System ValueType,引用类型继承于System Object
  5. 栈的内存分配是自动释放,堆的内存由GC来释放
  6. 值类型的变量赋值只是进行数据复制,创建一个同值的新对象,而引用类型变量赋值,仅仅是把对象的引用的指针赋值给变量,使它们共用一个内存地址
C#中的运算符
  • 算术运算符:+ - & / % ++ –
  • 逻辑运算符:&&同真为真, ||同假为假 ! 反判真假
  • 条件运算符:> < >= <= == !=
  • 赋值运算符:=
  • 三目运算符:= 条件? a值,b值
装箱和拆箱

装箱是值类型转换为引用类型时发生的

拆箱在引用类型转化为值类型时发生的

装箱过程:

首先在托管堆中为新生成的引用对象分配内存【大小为值类型,实例大小加上一个方法表指针和一个SyncBlackindex】

然后将值类型的数据拷贝到刚刚分配的内存中

返回托管堆中新分配的对象的地址

拆箱过程:

首先获取托管堆中属于值类型的那部分字段的地址,这一步是严格意义上的拆箱

将引用对象中的值拷贝到位于栈上的值类型实例中

为什么要装箱?

当需要一个支持任意类型的通用数据时,定义Object 后传入值类型需要装箱

装箱拆箱对执行效率的影响:

装箱生成全新的引用对象,会有时间损耗,降低效率,应尽量避免装箱

接口和抽象类 区别:
  1. 抽象类可以有构造方法,接口不能有构造方法
  2. 抽象类中可以有普通成员变量,接口中没有普通成员变量
  3. 抽象类中可以包含静态方法,接口中不能含有静态方法
  4. 一个类可以实现多个接口,但是只能继承一个抽象类
  5. 如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类中的子类中实现接口方法
相同点:

都可以被继承,都不能实例化,都可以包含方法声明,派生类必须实现未实现方法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/429670.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号