C#碎碎念(一)值类型与引用类型
2016-04-26 05:02
489 查看
凌晨四点写这种东西,一股森森的咏春打木桩的既视感。
说要强化语言其实是个很棘手的事情,因为一个人不知道自己不知道什么,不过好在鄙人在此方面积淀尚薄弱,随便翻翻书也能有所收获。
预计会将专门学习C#的周期计划从五周压缩到三周,比如我一开始是想先讲“反射”的,但翻完一整章实在又不知道从何说起,毕竟实战出真知,有些东西项目中暂时用不到就真是没法学。所以不求全,短期内随便能总结几点是几点吧。
回到正题。
先说个笑话,一开始我看C#代码时,想来想去惊呼搞毛啊,这函数把参数对象直接复制进来,搞东搞西最后不还是他喵的没改变参数的实际值么?!中了C++传指针传引用的毒。
当然随即了解到,C#中除了少数类型是按值传参,大多数类对象都是按引用处理的。
具体大概是值类型包括int、float等 + enum + struct,引用类型包括class等+string+array。
然后呢,你以为就这么简单么?那就太年轻了。
比如我猛然又发现《C#本质论》讲ref时,是拿string参数做例子的。说好的引用呢?为什么还要加ref?
然后我就翻到这篇文章讲得很清楚了:
net中String是引用类型还是值类型
评论中有句话说得好——“穿着值类型马甲的引用类型”。
类似的坑比事情目测还有很多,我们不要在意,继续往下走就好了。
为了凑篇幅最后加点tips:
1.预处理指令#warning可以用来提醒开发者任务尚未完结。给那些临时性代码做标记应该不错
2.VS安装目录就能找到微软出的C#语言规范文档,还是中文版。
说要强化语言其实是个很棘手的事情,因为一个人不知道自己不知道什么,不过好在鄙人在此方面积淀尚薄弱,随便翻翻书也能有所收获。
预计会将专门学习C#的周期计划从五周压缩到三周,比如我一开始是想先讲“反射”的,但翻完一整章实在又不知道从何说起,毕竟实战出真知,有些东西项目中暂时用不到就真是没法学。所以不求全,短期内随便能总结几点是几点吧。
回到正题。
先说个笑话,一开始我看C#代码时,想来想去惊呼搞毛啊,这函数把参数对象直接复制进来,搞东搞西最后不还是他喵的没改变参数的实际值么?!中了C++传指针传引用的毒。
当然随即了解到,C#中除了少数类型是按值传参,大多数类对象都是按引用处理的。
具体大概是值类型包括int、float等 + enum + struct,引用类型包括class等+string+array。
然后呢,你以为就这么简单么?那就太年轻了。
比如我猛然又发现《C#本质论》讲ref时,是拿string参数做例子的。说好的引用呢?为什么还要加ref?
然后我就翻到这篇文章讲得很清楚了:
net中String是引用类型还是值类型
评论中有句话说得好——“穿着值类型马甲的引用类型”。
类似的坑比事情目测还有很多,我们不要在意,继续往下走就好了。
为了凑篇幅最后加点tips:
1.预处理指令#warning可以用来提醒开发者任务尚未完结。给那些临时性代码做标记应该不错
2.VS安装目录就能找到微软出的C#语言规范文档,还是中文版。
相关文章推荐
- C#之泛型
- C# 获取当前路径方法
- C# INI类
- C#实现XML和实体类之间相互转换:序列化和反序列化
- C#如何读写和创建INI文件
- C# 计算时间差
- C#操作XML-创建-追加-带属性的读写(全)
- C# Timer用法及实例详解
- 了解了点C#的基础知识
- c# 配置文件的读写
- C#OOP之四 深入理解方法
- C#OOP之四 深入理解方法
- C# Winform中实现主窗口打开登录窗口关闭的方法
- C#OOP之四 深入理解方法
- C#中的自定义异常回顾
- C# LIST和STRING互相转换
- C# 将字节流转换为图片的实例方法,需要的朋友可以参考一下
- Winfrom中实现图片切换特效的方法。是我在jb51.net 上看到的! 写的很全。需要的可以看看!!!
- C# FromBase64String 解码换行问题
- 详解C#中通过委托来实现回调函数功能的方法