23.09.5 《CLR via C#》 笔记5

这篇具有很好参考价值的文章主要介绍了23.09.5 《CLR via C#》 笔记5。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第六章 类型和成员基础

  1. 类型可以定义0或多个以下成员:常量、字段、实例构造器、类型构造器、方法、操作符重载、转换操作符、属性、事件、类型
  2. 类型的可见性分为public和internal(默认)
  3. C#中,成员的可访问性分为private、protected、internal、protected internal、public;接口类型的所有成员必须是public;重写成员可访问性必须一致;从基类派生时可以放宽限制(不能收紧)
  4. 静态类(永远不会实例化)要用static关键字定义(C#),必须从Object派生,不能实现接口,只能定义静态成员,不能作为字段、方法参数或局部变量
  5. 使用partial关键字可将类型的代码分布到不同文件中(由C#编译器实现,与CLR无关)
  6. .NET Framework中的版本号包含四个部分:主版本号.次版本号.内部版本号.修订号(如xxx 2.7.1.34)
  7. CLR的方法调用指令
    1. call:可调用静态方法、实例方法、虚方法;call指令假定变量不为null(调用非静态方法时);call经常用于以非虚方式调用虚方法
    2. callvirt:可调用实例方法、虚方法;如果用来调用虚实例方法,先检查变量类型,然后以多态方式调用;发出调用的方法绝不能为null(如果是,抛出NullReferenceException异常,所以速度比call慢)
    3. 编译器调用值类型的方法时倾向使用call(因为不会为null,不需要检查并抛出异常)
    4. 设计类型时应减少虚方法数量(callvirt比call慢)
  8. 作者关于定义类型的建议
    1. 类型应该定义成sealed
    2. 数据字段应该定义成private
    3. 方法、属性和事件最好定义成private和非虚(当然有些需要公开的内容定义成public)
    4. 辅助的类型定义成嵌套类型
  9. 使用new关键字,告诉编译器该方法与基类的方法没有关系

第七章 常量和字段

  1. 常量的值必须在编译时确定;值保存在元数据中;常量被视为静态成员,而不是实例成员;运行时不为常量分配内存;不能获取常量的地址;不能以引用方式传递常量;常量只能是基元类型(和null)
  2. 字段容纳一个值类型的实例或一个引用类型的引用;字段的值在运行时才能获取
  3. CLR支持readonly字段和read/write字段;readonly字段只能在构造器方法写入
  4. 内联初始化的字段,C#实际在构造器中初始化
  5. 被标记为readonly的引用类型,不可改变的是引用,而不是引用的对象

文章来源地址https://www.toymoban.com/news/detail-696335.html

到了这里,关于23.09.5 《CLR via C#》 笔记5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#.Net学习笔记——CLR核心机制

    (1)C(Common) L(Language) R(Runtime) IL 的运行环境 (2) 从下图可以看到,我们的计算机会先把我们写的语言,编写成 IL 语言,再给计算机去读取。为什么我们不直接把我们的语言编写成计算机能够读取的?主要是考虑到我们计算机的不同,比如32位和64位,他们接收到计算

    2024年01月22日
    浏览(28)
  • 【LeetCode - 每日一题】2594. 修车的最少时间(23.09.07)

    给定每个师傅修车的时间和需要修的车辆总数,计算修理所有汽车需要的最少时间。 师傅可以同时修车。 看到题目没有任何头绪,直接查看题解。 至于为什么用二分做呢,讨论区有个友友这么说到: 对于修理时间 t t t 来说: 若 t t t 时间内可以修理完所有车,则大于等于

    2024年02月09日
    浏览(53)
  • 微信小程序--》从模块小程序项目案例23.10.09

    配置导航栏 导航栏是小程序的门户,用户进来第一眼看到的便是导航栏,其起着对当前小程序主题的概括。而我们 新建的小程序 时,第一步变开始配置导航栏。如下: 配置tabBar 因为配置tabBar需要借助字体图标,我这里平常喜欢使用阿里云字体图标库,所以需要先去阿里云

    2024年02月06日
    浏览(40)
  • 【LeetCode - 每日一题】1123. 最深叶节点的最近公共祖先(23.09.06)

    返回最深节点的最近公共祖先; 每个节点的 val 互不相同; 节点最多 1000 个; 和经典的 LCA 不同的是,这里的对象是 若干个叶节点(1个或多个,最深的) 。 首先将最深的叶节点找出来: bfs 广搜,用 map 存储每层的节点 记录所有节点的父节点: father 数组(在 bfs 广搜的同

    2024年02月09日
    浏览(37)
  • C#生成dll给c++调用 方法二COM方式 vs2022 NO Make Assembly COM-Visible选错了 不需要clr

    有些C++项目中也用了C语言.c,用方法一就无法使用【不能使用 /clr 选项编译 C 文件】。就用方法2。  参考:  https://www.5axxw.com/questions/content/2ozion  1.C# 生成dll     编译正常,C# dll就完成了。 2.C++调用示例

    2024年02月14日
    浏览(47)
  • 【LeetCode - 每日一题】449. 序列化和反序列化二叉搜索树(23.09.04)

    给定一棵二叉搜索树,实现序列化和反序列化; 注意 val 范围,因此 在序列化时需要插入分隔符分割每个节点的 val ; 要善于利用 二叉搜索树的特性(中序遍历 = 递增排序) ; 前序遍历 + 中序遍历 可以重构一棵树,又由于二叉搜索树自带中序遍历,因此在序列化时保存前

    2024年02月10日
    浏览(35)
  • C#设计模式09——组合模式的写法

    1. 什么是C#组合模式? 组合模式是一种结构型设计模式,它允许将对象组合成树形结构以表示“整体/部分”层次结构。使用此模式,客户端可以按相同的方式处理单个对象和对象集合,而不必关注它们是单个对象还是组合对象。组合对象本身也可以作为容器,包含其他组合对

    2024年02月03日
    浏览(31)
  • 读书笔记怎么写?沟通圣经《非暴力沟通》读书笔记

    沟通看似简单,在沟通的过程中,你是否传达错信息,引起别人的不快,甚至爆发重大冲突。 《非暴力沟通》由马歇尔·B·卢森堡博士所著,因童年经历,马歇尔博士提出了非暴力沟通。本书主要介绍什么是非暴力沟通,以及非暴力沟通在不同情境下的运用技巧,是非常有用

    2024年02月16日
    浏览(34)
  • Image Super-Resolution via Iterative Refinement 论文笔记

    基于Diffusion Model来做的超分辨,与以往基于GAN和CNN网络的不一样,Diffusion Model是从低分辨率图像中学习噪声然后通过UNet来估计噪声,再进行噪声去除来还原图像。主要是基于DDPM这篇论文的理论上进行改进的,相比其他方法来说可以很好的还原图像的高频信息,虽然在PSNR和

    2024年02月08日
    浏览(39)
  • 《Kafka权威指南》读书笔记

    《Kafka权威指南》第一、三、四、六章,是重点。可以多看看。 kafka是一个发布与订阅消息系统 消息:kafka的数据单元称为\\\"消息\\\"。可以把消息看成是数据库中的一个\\\"数据行\\\"。 消息的key:为key生成一个一致性散列值(HashCode),然后使用散列值对主题分区数进行取模,为消息选

    2024年02月04日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包