【深入理解C#】第2章 C#1所搭建的核心基础

1)委托类型

基本理解:

  • 类型安全的函数指针。
  • 可以间接完成某种操作,虽增加了复杂性,但也增加了灵活性。
  • 可以看作方法的占位符。

    为什么要用委托:

  • 可以传递函数意味着可以将业务逻辑作为参数传递。
  • 间接调用
  • 想要执行某些操作,但无需知道操作细节(Thread类)

2)C#1的类型系统是静态的,显式的和安全的

  • 静态--编译器知道你能使用哪些成员
  • 显式--必须告诉编译器变量具有什么类型
  • 安全--除非存在真实的转换关系,否则不能将一种类型当作另一种类型

    值类型和引用类型

    类(使用class声明)是引用类型,而结构(使用struct声明)是值类型。

  • 数组类型是引用类型,即使元素类型是值类型。
  • 枚举(使用enum声明)是值类型。
  • 委托类型(使用delegate声明)是引用类型。
  • 接口类型(使用interface声明)是引用类型,但可由值类型实现。

    值类型与引用类型的区别

  • 值类型的变量再它声明时的位置存储,引用类型总是在堆中。
  • 值类型的实例值总是存储在实例本身存储的地方,引用类型的实例存储的是一个引用。
  • 值类型不能派生出其他类型。
  • 引用类型有同步块索引,类型指针,需要GC回收。
  • 赋值时,值类型是创建一个副本,引用类型是指向同一块内存区域。

    装箱和拆箱

    装箱机制:允许根据值类型创建一个对象,然后使用这个新对象的一个引用。

    装箱场景

  • 需要引用类型的地方用值类型’
  • 值类型调用基类方法时
  • 将值类型作为接口表达式使用时(把它赋给一个接口类型的变量,或者把它作为接口类型的参数来传递)

原文地址:https://www.cnblogs.com/tWX173908/p/7197844.html

时间: 2024-10-03 07:25:43

【深入理解C#】第2章 C#1所搭建的核心基础的相关文章

通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能'menufile

通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能'menufile 1 #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能'menufile' 2 #!usr/bin/env python 3 #-*-c

JavaScript进阶 - 第2章 你要懂的规则(JS基础语法)

第2章 你要懂的规则(JS基础语法) 2-1什么是变量 什么是变量? 从字面上看,变量是可变的量:从编程角度讲,变量是用于存储某种/某些数值的存储器.我们可以把变量看做一个盒子,盒子用来存放物品,物品可以是衣服.玩具.水果...等. 2-2 给变量取个名字(变量命名) 我们为了区分盒子,可以用BOX1,BOX2等名称代表不同盒子,BOX1就是盒子的名字(也就是变量的名字). 我们赶快给变量取个好名字吧!变量名字可以任意取,只不过取名字要遵循一些规则: 1.必须以字母.下划线或美元符号开头,后面可

第5章 LINUX文件及目录管理命令基础

第5章 LINUX文件及目录管理命令基础5.1 操作LINUX必知必会基础知识5.1.1 Linux命令行组成结构root @ oldboy ~ # :当前用户名 分隔符 主机名 当前用户登陆后的位置,这是个变量 提示符 5.1.2 基本的Linux命令操作语法示例5.1.3 Linux与Windows的目录结构对比5.2 Linux文件及目录核心命令5.2.1 pwd:显示当前所在位置信息"print working directory"-L:逻辑路径:-P:物理路径系统Bash命令

深入理解计算机系统(序章)------谈程序员为什么要懂底层计算机结构

万丈高楼平地起,计算机系统就像程序员金字塔的地基.理解了计算机系统的构造原理,在写程序的道路上才能越走越远.道理LZ很早就懂了,可是一直没下定决心好好钻研,或许是觉得日常工作中根本用不到这些,又或许是每次拿起书看到那些复杂的底层架构,看到存储器,寄存器,CPU,总线等等这些概念就头大.总之,由于各种各样的原因,对这块的知识一直没有认真花时间去钻研.那么你可能会问,那你写这篇博客的题目不就是准备学习这方面的知识吗?是的,LZ 准备下定决心钻研了,至于原因如下: ①.经常用一些不知其所以然的技术,会

深入理解Magento - 第六章 - 高级Magento模型

我们讲过Magento有两种模型,简单模型和EAV(Entity Attribute Value)模型.上一章我们讲过所有的Magento模型都是继承自Mage_Core_Model_Abstract / Varien_Object.简单模型和EAV模型的区别在于资源模型(Model Resource).虽然所有的资源模型都最终继承“Mage_Core_Model_Resrouce_Abstract”,但是简单模型是直接继承“Mage_Core_Model_Mysql4_Abstract”,而E

深入理解Magento – 第五章 – Magento资源配置(转)

第五章 – Magento资源配置 对于任何一个更新频繁的项目来说,保持开发环境和生产环境的数据库同步是件很头疼的事情.Magento提供了一套系统,用版本化的资源迁移脚本来 解决这个问题. 上一章,我们为 Helloworld Blogpost 创建了一个模型.我们直接通过SQL语句“CREATE TABLE”来创建数据表.在这一章,我们将为Helloworld模块创建一个资源配置(Setup Resource)用于创建数据表.我们也会创建一个模块升级脚本,用来升级已经安装的模块.下面是我们要

深入理解Magento – 第六章 – 高级Magento模型(转)

深入理解Magento 作者:Alan Storm 翻译:Hailong Zhang 第六章 – 高级Magento模型 我们讲过Magento有两种模型,简单模型和EAV(Entity Attribute Value)模型.上一章我们讲过所有的Magento模型都是继承自Mage_Core_Model_Abstract / Varien_Object.简单模型和EAV模型的区别在于资源模型(Model Resource).虽然所有的资源模型都最终继承“Mage_Core_Model_Resro

《深入理解LLVM》第一章 LLVM简介

第一章 LLVM简介 作者:史宁宁 1.1 LLVM是什么 LLVM是什么?这是一个虽然基础,但是也曾经让很多新入门的人迷惑的一个问题.从字面上来讲,LLVM(Low Level Virtual Machine)是一个底层虚拟机,LLVM曾经有一部分功能对虚拟机有所帮助.但是现在,LLVM所代表的基本和虚拟机没有关系了,也不在作为一个缩写使用了,而是直接作为一个名字使用.那么LLVM到底是什么? LLVM可以被看作是一系列的编译器和工具链技术的集合,而且它们是模块化并且是可重用的.这是LLVM官

2018-2019-1 20189215 《深入理解计算机系统》第一章

第一章 计算机系统漫游 主要内容 全面精炼的概括了本书的内容,也就是"计算机系统概述",包括: 1.解释计算机系统中"信息"的概念:就是二进制位: 2.解释源程序(以C源程序为例)到可执行程序的过程:预处理 → 编译 → 汇编 → 链接 3.通过可执行程序被shell加载执行流程,讲解了计算机的硬件组成: 总线.I/O设备.主存.处理器. 4.高级缓存的作用以及计算机存储设备的体系结构--金字塔层次结构. 5.解释了操作系统.应用进程.计算机硬件三者之间的关系:操作