积分:0 威望: 金钱: 贡献:

微金属

关注排行榜

当前无数据...

查看: 23|回复: 2

【C#知识】面试必备

[复制链接]
发表于 2017-12-1 22:34:25 | 显示全部楼层 |阅读模式
一楼占坑

打赏列表

~~~还没有人打赏~~~
回复

使用道具 举报

 楼主| 发表于 2017-12-3 13:47:36 | 显示全部楼层
值类型和引用类型

值类型(value type):
byte short int long float double decimal char bool struct 统称为值类型,值类型变量声明后不管是否已经赋值,编译器都会为其分配内存在C#中值类型的变量直接存储数据
例 当申请两个int 值同为42 时 程序会申请出两段int 值为42 的内存区域


引用类型(reference type):
string class 统称为引用类型,当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并没有为其分配堆上的内存空间。
当使用new创建一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中。


回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-3 20:01:31 | 显示全部楼层
string相关问题

string是一个特殊的引用类型,使用上有点像值类型。
之所以特殊,也主要是因为string太常用了,为了提高性能及开发方便,对string做了特殊处理,给予了一些专用特性。
为了弥补string在字符串连接操作上的一些性能不足,便有了StringBuilder。

在C#中string str = null 时不会分配内存空间的 并且在调用时会时报错为null对象
而string str = “”时给它分配了长度为空字符串长度的内存空间

string s = new String(“xyz”);
会同时申请两个对象 一个是“xyz”,一个是指向“xyz”引用的对象


回复 支持 反对

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 加入微金属

本版积分规则

载入中

QQ|Archiver|小黑屋|微金属

GMT+8, 2017-12-12 08:25 , Processed in 0.327217 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表