CSharpThinking---C# 要点(附加三)
Part 1
一.值类型和引用类型的误区:
1.结构是轻量级的类。
错误,大多数时候结构交类中少了很多方法,略显轻便,但DateTime是返例,DateTime携带了计算方法。类中所带的方法是引用类型,并不会大量消耗内存。
2.引用类型在堆上,值类型在栈上。
错误,变量的值是在它声明的位置存储的,引用类型始终在堆上,值类型则可能在堆上也可能在栈上,具体取决于上下文。假定,一个类中有一个int类型的实例变量,在堆上(那么在这个类中的任何对象,总是在堆上)。
3.对象在C#中默认是通过引用传递的。
错误,涉及到一个引用类型时,可以以“引用”方式传递,也可用“传值”方式传递。引用类型作为方法参数时,参数默认是以“值传递”的方式来传递的,但值本身是一个引用。
二.装箱和拆箱
1.拆箱与装箱是Copy副本,改变原始值并不改变拆/装箱后的值。
2.如果一个类型的值调用ToString、Equals、GetHashCode时,没有覆盖这些方法,将会发生装箱(基类方法为Object)。将值作为接口传递时也是如此。
三.与委托有关
C#1:实例方法,签名必须相同。
C#2:方法组转换订阅事件。
C#3:Lambda表达式、隐式转换+匿名委托、扩展方法。
C#4:委托中支持泛型的协变和逆变,动态类型。
Part 2
一.泛型
1.为什么需要泛型:无需每次强制转换C#1,减少拆箱与装箱操作(提升性能),IDE中集成检查(编译时检查,而不是在运行时)。
2.List<T> 读作:List Of T ,仿VB。命名上Tkey ,TValue更有意义。
3.泛型方法和泛型类型。
4.类型约束:引用类型约束,值类型约束,构造函数类型约束,转换类型约束,组合约束。
5.遇到泛型类型时,编译器会在编译未绑定的泛型类型时就解析好所有方法重载,而不是等到执行时。
6.泛型迭代:IEnumerator<T>
7.反射:typeof()
转载于:https://www.cnblogs.com/cuiyansong/archive/2013/05/07/3054049.html
CSharpThinking---C# 要点(附加三)相关推荐
- android的三个基础控件,Android基础控件——ProgressBar自定义的介绍、动画效果实现、附加三个漂亮的进度条...
xml文件: android:centerColor="#00ff00" android:endColor="#0000ff" android:startCol ...
- Android基础控件——ProgressBar自定义的介绍、动画效果实现、附加三个漂亮的进度条
ProgressBar自定义的介绍.动画效果实现.附加三个漂亮的进度条 shape属性介绍: corners 圆角 gradient 渐变 padding 内容离边界距离 size 大小 ...
- 【C#】第3章学习要点(三)--常用类和结构的用法
分类:C#.VS2015 创建日期:2016-06-19 使用教材:(十二五国家级规划教材)<C#程序设计及应用教程>(第3版) 一.DateTime结构和TimeSpan结构 DateT ...
- python编程入门单例_常见的在Python中实现单例模式的三种方法
单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在 ...
- sdn体系的三个平面_十张图看懂SDN与NFV的区别与联系?
原标题:十张图看懂SDN与NFV的区别与联系? 专业的人说的很准确但是普通人难以理解,常常记不住,分不清,不专业的人往往又说的差点意思.无意间,笔者在领英上看到一个介绍SDN/NFV区别的公开文档,内 ...
- 量子纠缠(三)——波尔和爱因斯坦之争
现在,让我们再回到波尔和爱因斯坦有关量子理论的争论 -以下簡稱為'波爱之争'. 两人都是伟大的物理学家,对量子理论的发展都做出了杰出的贡献.分别因为解决光电 效应问题和量子化原子模型而获得 1921 ...
- 设计模式(三)单实例模式
引言 对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务:一个系统只能有一个窗口管理器或文件系统:一个系统只能有一个计时工具或ID(序号)生 ...
- 调试SI4432要点
#include "led.h" #include "delay.h" #include "sys.h" #include "us ...
- 初二年级估算要不要用计算机,期中备考:人教版1-6年级上册数学知识要点,抓紧为孩子收藏!...
原标题:期中备考:人教版1-6年级上册数学知识要点,抓紧为孩子收藏! 一年级 人教版一年级上册第一单元知识点汇总 1. 数一数 点数法:数数时,要按一定的顺序来数,从1开始,数到最后一个事物所对应的是 ...
最新文章
- Xcode+OpenCV3.4.0 折腾(2)
- mac 安装 RabbitMQ
- 几个容易引起误会的英文短语
- 用html可以写游戏,javascript可以写游戏吗?
- [自学]Docker system 命令 查看docker镜像磁盘占用情况 Docker volume 相关
- [python opencv 计算机视觉零基础到实战] 十一找到图片中指定内容
- pygame游戏开发入门例子
- Struts 2框架创建的第一个项目
- android全方位性能优化方法
- Linux系统知识汇总
- jQuery 提供了多种遍历 DOM 的方法。 遍历方法中最大的种类是树遍历(tree-traversal)。jQuery 提供了多种遍历 DOM 的方法。 遍历方法中最大的种类是树遍历(tree-t
- linux学习(3)——vim文本编辑工具
- python制作动态二维码步骤_七夕 | 如何用Python制作动态二维码,来哄女朋友开心?...
- QQ群文件下载速度慢解决办法
- php表格 单元格,实例演示PhpSpreadsheet的单元格设置教程
- ECMAScript-函数
- discuz 论坛不同版块使用不同模板
- 【算法竞赛模板】二分图(染色法、匈牙利法)
- Flink SQL搭建实时数仓DWD层
- LiveRTMP内置IPCamera实现RTMP直播摄像机功能
热门文章
- linux fb设备驱动,linux设备驱动归纳总结(八):1.总线、设备和驱动
- 软件产品三步曲(内容、可用性、视觉)
- 如果你身边有这样的人,赶紧让他说点什么,然后反过来买彩票
- JavaWeb那些事儿(二)--java中类、成员和方法的访问权限
- ArcGIS制图表达Representation-符号制作
- Cocos2d-x学习之创建Android工程和编译
- Lua注册C++类及函数
- mysql数据库创建交叉表查询_sql – 我需要知道如何创建交叉表查询
- oracle 10g rac 停止,Oracle10g RAC 关闭及启动
- Linux 下 Weblogic 的安装 、配置以及发布