CLR via C# 读书笔记1-8

两相变频交错PFC实战:从论文理论到PSIM仿真的完整避坑指南 本文详细解析了两相变频交错PFC技术从理论到PSIM仿真的完整实现过程,特别针对CRM模式下的BOOST PFC设计挑战提供实用解决方案。涵盖周期值比较法与RS触发器法的对比实施、PSIM仿真中的过零处理与收敛性优化等核心问题,并给出硬件实现的进阶建议,助力工程师高效完成高功率密度PFC设计。 阅读详情

通用语言规范 Common Language Specification

CLR 继承了多种语言,并允许不同语言之间的对象能互操作,这是因为 CLR 建立了一套类型,metadata (自描述), 以及通用运行环境的标准。
但是不同的语言之间差异还是相当大,比如有的区分大小写,有的却不;有的支持有的 unsigned 整形值, 运算符重载, 可变的参数数目等等,有的却不。

Microsoft 由此定义了通用语言规范 Common Language Specification (CLS),以此来规定编译器必须支持的特性集合。
CLR/CTS 比 CLS 支持更多的特性,所以如果你不在乎开发语言间的互操作性(比如你的所有项目都采用同一种开发语言),你可以随意使用你选择的开发语言的各种特性。

图 1-6 显示了他们之间的关系

一旦你用一种开发语言定义了一个类型,并且需要再别处用其他开发语言访问该类型,你就必须注意了:该类型必须符合 CLS 规范。以下是在c#中声明一个类型是符合CLS规范的,同时却包含了不符合CLS规范的代码,编译器会提示有错:

using System;
// Tell compiler to check for CLS compliance
[assembly: CLSCompliant(true)]
namespace SomeLibrary 
{
	// Warnings appear because the class is public
	public sealed class SomeLibraryType 
	{
		// Warning: Return type of 'SomeLibrary.SomeLibraryType.Abc()'
		// is not CLS-compliant
		public UInt32 Abc() { return 0; }

		// Warning: Identifier 'SomeLibrary.SomeLibraryType.abc()'
		// differing only in case is not CLS-compliant
		public void abc() { }

		// No warning: this method is private
		private UInt32 ABC() { return 0; }
	}
}


[assembly:CLSCompliant(true)] 用来告诉编译器公有成员会被其他语言访问,需要确保其符合CLS规范。 CLS 规则的详细信息可参照(http://msdn.microsoft.com/en-us/library/730f1wy3.aspx) 中的 “Cross-Language Interoperability” 小节。

CLR 中一个类型的成员不是字段就是方法,所以你使用到的枚举, 数组, 属性, 索引器, 委托, 事件, 构造函数, 析构函数, 运算符重载, 转换函数等等经过编译器的处理,都成为这两者之一。例如以下的类型定义

using System;
internal sealed class Test
{
	// Constructor
	public Test() {}

	// Finalizer
	~Test() {}

	// Operator overload
	public static Boolean operator == (Test t1, Test t2) 
	{
		return true;
	}

	public static Boolean operator != (Test t1, Test t2) 
	{
		return false;
	}

	// An operator overload
	public static Test operator + (Test t1, Test t2) { return null; }

	// A property
	public String AProperty 
	{
		get { return null; }
		set { }
	}

	// An indexer
	public String this[Int32 x] 
	{
		get { return null; }
		set { }
	}

	// An event
	public event EventHandler AnEvent;
}


编译这些代码后通过 IL Disassembler 工具 (ILDasm.exe) 察看该托管模块(图 1-7),可以发现所有成员都被转变成字段或方法了。

表 1-4 显示了语言之间的映射关系:

表1-4 类型的字段和方法
成员成员类型对应的程序处理
AnEvent字段事件
.ctor方法构造
Finalize方法析构
add_AnEvent方法事件附加方法
get_AProperty方法属性的读方法
get_Item方法索引器的读方法
op_Addition方法+ 运算
op_Equality方法== 运算
op_Inequality方法!= 运算
remove_AnEvent方法事件移除方法
set_AProperty方法属性的写方法
set_Item方法索引器的写方法

 

表 1-4 中未列出的.class, .custom, AnEvent, AProperty, 以及 Item — 这些都是针对该类型的附加 metadata。这些不会被映射成字段或方法,它们只是用来给CLR 或编程语言或工具提供额外的信息。

 

 

YOLOv11改进 - 卷积Conv | RFAConv:感受野注意力卷积动态调整感受野,提升小目标检出精度 本文介绍了感受野注意力卷积(RFAConv)及其在 YOLOv11 中的结合。空间注意力虽广泛应用但有局限,RFAConv 是将空间注意力与卷积操作融合的新型注意力机制,通过强化感受野空间特征关注、解决卷积核参数共享挑战、增强大尺寸卷积核处理能力等策略优化卷积核功能。它有基于 Group Conv 和 Unfold 两种实现方式,实验表明前者性能更好。我们将 RFAConv 集成进 YOLOv11,在数据集实验证明了方法优越性 。 阅读详情

相关推荐

基于STM32F103C8T6单片机设计CAN接口8路继电器控制板硬件(原理图+PCB)+软件源码

基于STM32F103C8T6单片机设计CAN接口8路继电器控制板硬件(原理图+PCB)+软件源码,仅供学习及设计参考。

GJZGRB的博客 1416

读书笔记—CLR via C#反射

前言 这本书这几年零零散散读过两三遍了,作为经典书籍,应该重复读反复读,既然我现在开始写博了,我也准备把以前觉得经典的好书重读细读一遍,并且将笔记整理到博客中,好记性不如烂笔头,同时也在写的过程中也可以加深自己理解的深度,当然同时也和技术社区的朋友们共享 程序集加载 AppDomain.Load 尽量避免使用此方法加载程序集,因为Assembly不是从System.MarshalB...

weixin_34387284的博客 217

银河麒麟(ky10)x86与arm双架构下编译zlmediakit的实战指南

本文提供了在银河麒麟(ky10)操作系统上,针对x86与arm双架构编译部署流媒体服务器zlmediakit的完整实战指南。文章详细阐述了从环境准备、依赖安装、代码获取到编译构建与测试的全过程,重点解析了两种CPU架构下的关键差异与注意事项,帮助开发者高效完成国产化平台上的流媒体服务搭建。

weixin_29306875的博客 98

《CLR via C#》读书笔记-CLR寄宿与AppDomain

CLR寄存和AppDomain的简介

郑林的专栏 1382

半导体关键系统之RMS浅谈

这种系统还要求设备在设备上的配方发生变化时通知工厂主机,并需要与EAP(Equipment Automation Process)联结,旨在实时管控自动化系统所用配方与用户当初的设定是否匹配,从而使得自动化系统所用的配方更加趋于安全。例如,制药行业中的药品生产管理系统(GMP),它对药品的生产过程进行严格控制,包括原材料的采购、生产工艺流程、质量控制等方面。这些系统通常与企业的生产系统集成,能够对产品的配方进行精细化管理,包括配方的设计、试验、验证、生产等环节。

阿拉伯梳子的专栏 6154

SAP 更改物料基本计量单位

创建订单单位后,新创建的采购申请、采购合同、采购信息记录均会使用新的订单单位

matinal 當冬夜漸暖 。公众号:matinal 6161

《CLR via C#》第六章 读书笔记

第六章 类型和成员基础 第一节 类型的各种成员 1、类型中可定义0个或多个以下种类的成员:常量、字段、实例构造器、类型构造器、方法、操作符重载、转换操作符、属性、事件、类型。 2、无论什么编程语言,编译器都必须能处理源代码,为上述每种成员生成元数据和IL代码。所有编程语言生成的元数据格式完全一致。这正是CLR成为“公共语言运行时”的原因。元数据是所有语言都生成和使用的公共信息。(疑问:面向...

qq_41543031的博客 241

Pi0 项目复现及项目问题解决方案(全网抢先发布~)

Pi0 项目复现及项目问题解决方案(全网抢先发布~)

m0_68167062的博客 2260

CLR via C# 3 读书笔记(8):第1章 CLR执行模型 — 1.8 通用语言规范

CLR允许不同语言创建的对象之间能够相互进行通信。换句话说,CLR集成了所有语言,并且允许一种语言创建的对象在另一种完全不同的语言编写的代码中被看做是等同的成员。CLR的标准类型集合、元数据(自描述类型信息)和通用执行环境,使这种集成成为可能。 语言继承是个空想,不同语言之间差异太大。例如,有些语言不区分大小写,有些不支持无符号整型,操作符重载,有些方法不支持可变数目的参数。 如果希望创建的类...

weixin_30509393的博客 108

解决Windows 10安装语言包时遇到的0x800F0954错误

在安装Windows 10操作系统的语言包时,如果遇到错误代码0x800F0954的提示,这无疑会让许多用户感到困惑和无助。这个错误通常意味着在安装过程中遇到了一些阻碍,导致无法正常完成语言包的安装。本文将为大家详细解析这个错误代码0x800F0954,并提供一系列有效的解决方法,帮助大家顺利安装所需的语言包。

nntxthml的博客 3793

操作系统 | 知识梳理 | 复习(上)

操作系统复习

知识库搭建ing 3473

CLR基础之一---认识CLR [《CLR via C#》读书笔记]

《CLR via C#》读书笔记 什么是CLR CLR的基本概念 通用语言运行平台(Common Language Runtime,简称CLR)是微软为他们的.Net虚拟机所选用的名称。这是通用语言架构(简称CLI)的微软实现版本,它定义了一个代码运行的环境。CLR运行一种称为“通用中间语言”的字节码,这个是微软的通用中间语言实现版本。 CLR运行在微软的视窗操作系统上...

weixin_30872499的博客 2241

图机器学习(1)——图论基础

图 (Graph) 是一种描述实体间关系的数学结构,几乎在各个领域都有应用。例如,社交网络就是图,其中用户之间的连接取决于一个用户是否“关注”另一个用户。图论,即对图的研究,一直以来广受关注,包含了大量算法、性质分析方法和数学模型,以解析复杂系统的行为特征。本节将介绍图数据结构的核心概念,通过理论阐述与实例演示相结合的方式,理解基础理论用以实践应用。重点介绍用于创建、操作和研究复杂网络结构与功能的 Python 库。

盼小辉丶的博客 9028

NET CLR via C#读书笔记 - 第一章 CLR执行模型

NET CLR via C#读书笔记 - CLR执行模型CLR执行模型1.1 CLR简介1.2 CLR执行模型1.2.1 将源代码编译成托管模块 CLR执行模型 1.1 CLR简介 CLR(Common Language Runtime(公共语言运行时))可以简单理解为是一个支持多种编程语言及多语言互操作,完整的高级虚拟机。   程序在运行的时候有着惊人数量的运行时依赖。每个有用的程序都需要某些运行时函数库,以便其能跟电脑的其它资源(如用户输入设备,磁盘文件,网络通信等)交互,同时程序也需要转换成计算机硬

CreateNewWorld的博客 471

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

CLR via C# 读书笔记目录

一口气写了CLR via C# 两章的笔记,有些内容自己也似懂非懂,有些则觉得很好很强大,所以趁此机会作个目录同时为每篇文章打个评分:  纯理论,无聊 有参考价值,可看 有实用价值,必看 CLR via C# 读书笔记1-1: 托管模块 (Managed Modules)定义 CLR via C# 读书笔记1-2:程序集(Assemblies)定义 CLR via C# 读书笔记1-3

sqlchen的专栏 909

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

NET CLR via C#读书笔记 - 第七章 常量和字段

NET CLR via C#读书笔记 - 第七章 常量和字段1 常量1.1 常量定义1.2 常量的特点和限制2 字段2.1 字段定义2.2 字段修饰符 1 常量 1.1 常量定义   常量是从值不变化的符号,定义常量符号时,值必须在编译阶段就确认,编译后常量将保存在程序集的元数据中。 1.2 常量的特点和限制   ① 只能定义编译器支持的基元类型的常量,定义非基元类型的常量,必须要将值设置为null(意义不大)。   ② 常量值永不改变,通常被视为类型的一部分(被视为静态成员,而不是实例成员)。   ③ 定

CreateNewWorld的博客 219

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

[CLR via C#读书笔记]第一章 CLR执行模型

CLR简介 CLR(Common Language Runtime)是一个可以由多种语言使用的“运行时",它与具体使用哪种语言无关,只要编译器支持CLR,无论选择什么语言,相应编译器都会将代码编译成一个托管模块,即一个标准的32位PE(Portable Executable)文件或64位PE32+文件,该模块需要CLR才能执行。 CLR的主要功能包括(1)内存管理;(2)程序集加载;(

胖子没有错! 1302

《CLR via C#》读书笔记-.NET多线程(三)

主要记录了CLR线程池的基本知识、CLR线程池的几个常用方法,以及执行线程与辅助线程的上下文的“流动”,对应《CLR via C#》的26.1-26.3小节

郑林的专栏 981

NET CLR via C#读书笔记 - 第九章 参数

NET CLR via C#读书笔记 - 第九章 参数1 可选参数和命名参数1.1 代码示例1.2 可选参数以及命名参数的规则和原则2 以引用方式传参3 可变数量的参数 1 可选参数和命名参数 1.1 代码示例   可选参数就是函数包含默认值得形参,命名参数是指调用方法的时候通过指定参数名称来传递实参,代码示例如下: public sealed class Demo{ //定义含有默认参数值的函数 其中x,s就是可选参数 public void dpFunc(int x = 0,string s = "

CreateNewWorld的博客 264

CLR via C# 相关读书笔记

CLR via C# 2nd CLR via C# 3nd 麒麟.NET 转载于:https://www.cnblogs.com/michael110/archive/2011/03/07/1974517.html

anyanyu2851的博客 161

《CLR via C#》第八章 读书笔记(未完结

第八章 方法 第一节 实例构造器和类(引用类型) 1、构造器方法在“方法定义元数据表”中始终叫做.ctor(constructor的简称)。创建引用类型实例时,首先为实例的数据字段分配内存,然后初始化对象的附加字段(类型对象指针和同步块索引),最后调用类型的实例构造器来设置对象的初始状态。 2、构造引用类型的对象时,在调用类型的实例构造器之前,为对象分配的内存总是先被归零。 3、实例构造器...

qq_41543031的博客 250

CLR via C#读书笔记一:CLR的执行模型

CLR(Common Language Runtime)公共语言进行时是一个可由多种编程语言使用的“进行时”。 将源代码编译成托管模块 可用支持CLR的任何语言创建源代码文件,然后用对应的编译器检查语法和分析源代码。无论选择哪个编译器,结果都是托管模块(managed module)。托管模块是标准的32位Microsoft Windows可移植执行体(PE32)文件,...

198

[Clr via C#读书笔记]Cp1CLR执行模型

Cp1CLR执行模型 本章的概念点 CLR=Common Language Runtime 内存管理,程序集加载,安全性,异常处理和线程同步、CLR是基础,支持着面向它的各种语言。各种语言会被对应的编译器转换为托管模块。 不同语言有各自的优点和不足。 在需要托管程序运行的电脑上必须安装CLR(.NET Framework). 托管模块managed module PE32,PE32+=...

diawuzi7244的博客 167

clr via c#读书笔记四:call、callvirt

1、嵌套类,就是定义在类中的类;嵌套类可以访问外部类的方法、属性、字段而不管访问修饰符的限制,但是外部类只能够访问修饰符为public、internal的嵌套类的字段、方法、属性; 2、CLR如何调用虚方法、属性和事件: IL提供两个方法调用指令:call和callvirt。 call调用静态方法、实例方法和虚方法;callvirt调用实例方法和虚方法,不能调用静态方法; ...

408

CLR via C# 读书笔记1-1

CLR via C# 读书笔记1-1 把源代码编译为托管模块 (Managed Modules) 进行开发之前,你首先需要选择你擅长的语言。某些时候这很难抉择,因为不同的开发语言提供不同的开发特性。例如:非托管 C/C++ 提供了操作系统非常底层的控制权,你能够随心所欲地管理内存,轻而易举地建立线程,等等。 相反的 Microsoft Visual Basic 6.0 让你能快速的开发 UI

sqlchen的专栏 888

《CLR via C#》第五章读书笔记

《CLR via C#》第五章 第五章编译语言的基元类型引用类型和值类型值类型的装箱和拆箱对象哈希码dynamic基元类型 第五章 主要是抽取一些重要的内容,简单的小结 编译语言的基元类型 编译器直接支持的数据类型成为基元类型。 基元类型直接映射到framework类库(FCL)中存在的类型。例如:C#的int直接映射到System.int32类型中。 编译器能够支持基元类型之间的隐式或显示转型。在不会发生数据丢失的情况下,允许隐式转换;反之,对于数据类型转换后会丢失精度或者数量级,C#就要求显示转换。

qq_44762814的博客 445
上一篇: CLR via C# 读书笔记1-7
下一篇: CLR via C# 读书笔记1-9
sqlchen
博客等级 码龄24年 10粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值