常量 常量是值从不变化的符号.定义常量符号时,它的值必须能在编译时确定.确定后,编译器将唱两只保存在程序集元数据中.使用const关键字声明常量.由于常量值从不变化,所以常量总是被视为类型定义的一部分.换言之,常量总是被视为静态成员,而不是实例成员.常量的值直接潜入代码,在运行时不需要为常量分配任何内存. 字段 字段是一种数据成员,其中容纳了一个值类型的实例或者一个对引用类型的引用.由于字段存储在动态类型中,所以它们的值在运行时才能获取.字段还解决了常量存在的版本控制问题.字段可以是任何数据类型…
注:书本第8章:方法 实例构造器和类(引用类型) 构造器方法在“方法定义元数据表”中始终叫做.ctor(constructor的简称). 构造引用类型的对象,在调用类型的实例构造器之前,为对象分配的内存总是先被归零. 如果类没有显示定义任何构造器,c#编译器将定义一个默认(无参)构造器.如果类的修饰符为abstrat,那么编译器生成的默认构造器的可访问性就为protected:否则,构造器会被赋予public可访问性.静态类编译器根本不会生成默认构造器. 类的实例构造器在访问从基类继承的任何字段…
强化学习读书笔记 - 05 - 蒙特卡洛方法(Monte Carlo Methods) 学习笔记: Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto c 2014, 2015, 2016 数学符号看不懂的,先看看这里: 强化学习读书笔记 - 00 - 数学符号说明 蒙特卡洛方法简话 蒙特卡洛是一个赌城的名字.冯·诺依曼给这方法起了这个名字,增加其神秘性. 蒙特卡洛方法是一个计算方法,被广泛…
1.常量是值从不变化的符号.只能定义编译器识别的基元类型的常量.如:Boolean,Char,Byte,SByte,Int16,UInt16,Int32,UInt32,Int64,Single,Double,Decimal和String; 2.c#也允许定义非基元类型的常量,但是前提是把值设为null. 3.编译器将常量保存到程序集元数据中. 4.常量总是被视为静态成员,而不是实例成员.定义常量将导致创建元数据. 5.代码引用常量符号时,编译器在定义常量的程序集的元数据中查找该符号,提取常量的值…
本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.方法那些事儿 (1)方法的结构:方法头—指定方法的特征,方法体—可执行代码的语句序列: (2)方法的调用:参数.值参数.引用参数.输出参数.参数数组: ①参数: 形参—本地变量,声明在参数列表中:形参的值在代码开始之前被初始化: 实参—实参的值用于初始化形参: ②值参数: 为形参在栈上分配内存,将实参的值复制到形参: ③引用参数: 不为形参在栈上分配内存,形参的参数名作为实参变量的别名指向同一位置,必须使用ref关…
1.定义泛型类型或方法时,为类型指定的任何变量(比如T)都称为类型参数.使用泛型类型或方法时指定的具体数据类型称为类型实参. 2.System.Collections.Concurrent命名空间提供了线程安全的泛型集合类.Microsoft建议使用泛型集合类,不建议使用非泛型集合类. 3.具有泛型类型参数的类型称为开放类型,CLR禁止构造开放类型的任何实例.这类似于CLR禁止构造接口类型的实例.代码引用泛型类型时可指定一组泛型类型实参.为所有类型参数都传递了实际的数据类型,类型就成为封闭类型.…
Cp15枚举和位标识 枚举类型 本质是结构,符号名称-值:好处显而易见:System.Enum;值类型: 编译的时候,符号会转换为常量字段: 枚举支持很多方法和成员: 位标识bit flag 判断和设置文件属性: 经常用枚举类型来标识一组可以组合的位标识 : System.FlagsAttribute 位标识这一块不常用:暂时了解即可: 枚举类型添加方法 利用扩展方法…
注:书本第9单参数 CLR默认所有方法参数都传值.引用本身是值引的,意味左方法能修改对象,而调用都能看到这些修改.值类型,传的是实例的一个副本,所以调用者不受影响. (和以前理解的不一样.默认都是传值的,引用类型本以为就是传指针的,但不是的:值类型是因为传了一个副本才没有改变原值) CLR允许以传引用而非传值的方式传递参数.out和ref.他们都会生成相同的IL代码.但out不需要在调用者处初始化,而ref需要. 两个重载方法如果只有out和ref的区别,则不合法.因为在IL中,他们生成的代码是…
Cp17委托 简单介绍 delegate回调函数机制,可以理解存储函数地址的变量类型: 类型安全: 引用类型支持逆变和协变: 回调 静态方法,实例方法 委托的本质 所有的委托都派生自System.MulticastDelegate; IL代码分析,本质是类,包含构造器,invoke,begininvoke,endinvoke;同步回调和异步回调: 定义类的地方都可以定义委托: 每个委托类型对象都是包装器,包装一个方法和调用该方法的参数: 委托链 P362对委托链的本质有详细介绍…
Cp7常量和字段 常量 常量在编译的时候必须确定,只能一编译器认定的基元类型.被视为静态,不需要static:直接嵌入IL中: 区别ReadOnly 只能在构造的时候初始化,内联初始化. 字段 数据成员,用到的动态内存是在类型对象中分配的. 注意,当引用类型的字段标记为readonly的时候,不可改变的是引用本身,而不是引用的那个对象,这个对象内部的成员是可以改变的.…