call和callvirt
摘要:call以非虚方式调用虚函数。 callvirt以虚方式调用虚函数,调用的时候会判断真正引用的对象,调用该类型的
阅读全文
版本号
摘要:.net中版本号分成四部分:主版本号(major version),次版本号(minor version),内部版本号(build number),修订号(revision)。 例如:1.2.3.4分别对应这四部分
阅读全文
partial分部类
摘要:意义 1、源代码控制 2、将一个类或结构分成不同的逻辑单元 3、代码拆分
阅读全文
友元程序集
摘要:[assembly: System.Runtime.CompilerServices.InternalsVisibleTo(程序集,公钥)] internal class SomeInternalType { } 通过以上声明,友元程序集可以访问internal class
阅读全文
反射与dynamic
摘要:反射 dynamic 语法相对简化一些,性能上还未测试。
阅读全文
GetHashCode作用
摘要:除了以下的转载,再补充几点: 1、相同对象的hashcode一定相同,不同的hashcode不一定不相同。 2、好的散列算法可以更均匀的分布,进而可以更快的索引 3、据说,值对象的hashcode由第一个字段得来 4、hashtable,dictionary等相关的类需要借助hash值来判断KEY(
阅读全文
论immutable不可变性
摘要:什么叫immutable和mutable?简单来讲,一个immutable的对象一旦被创建好,它的状态将不会改变。反过来,如果一个类的实例是immutable的,那么我们把这个类也称作immutable class。 immutable的优势 便于多线程编程 方便地作为hashtable的key 便
阅读全文
对象相等性和同一性
摘要:概念同一性:同一个引用 相等性:所有部分都相等,但并一定是同一个引用。包含4个特征 1、自反性,自已等于自己 2、对称性,x=y,y也一定等于x 3、可传递性,x=y,y=z,则x=z 4、一致性,x,y都不变的情况下,比较结果不能变 Object.Equals 方法 The type of com
阅读全文
值类型 struct
摘要:由于值类型存在装箱和拆箱的过程,所有导致在修改值类型对象内部数据时,有可能会出现一些与预想不同的结果。 比如 第9行,如果p是引用类型,则没有任何问题,值会被修改为4,4,但是p是值类型,所以输出的仍然是原来的值2,2 所以值类型最好是immutable,声明的时候都声明为readonly
阅读全文
装箱的过程
摘要:分为三步http://i.cnblogs.com/EditPosts.aspx?opt=1 1、在托管堆中分配内存。分配的大小等于值类型的各字段所需要的内存量加上托管堆上所有的对象都有的额外两个成员(类型对象指针和同步块索引)所需要的内存量。 2、值类型的字段复制到新分配的堆内存 3、返回堆内存的的
阅读全文
基元类型
摘要:编译器直接支持的数据类型称为基元类型(primitive type)。基元类型直接映射到FCL中存在的类型。比如在C#中,int直接映射到System.Int32类型。 checked和unchecked基元类型 对基元类型的许多算术运算都可能导致溢出。可以通过全局性的打开编译开关(项目属性-》生成
阅读全文
CLR如何控制类型中的字段排序
摘要:[StructLayout(LayoutKind.Sequential) ]保持字段布局 [StructLayout(LayoutKind.Auto) ]CLR自动选择最优 [StructLayout(LayoutKind.Explicit) ]利用偏移量在内存中显示排列字段,需要用FieldOff
阅读全文
using的作用
摘要:1、引用命令空间 2、类型,命名空间别名 3、限定对象生命周期
阅读全文
Type Object——类型对象
摘要:clr会为应用程序使用的每个类型创建一个内部数据结构,这种数据结构称为类型对象。 具有泛型类型参数的类型称为开放类型(open type),CLR禁止构造开放类型的任何实例。 代码引用一个泛型类型时,可指定一组泛型类型实参。假如为所有类型实参传递的都是实际数据类型,类型就称为封闭类型(closed
阅读全文
ConcurrentDictionary内部机制粗解
摘要:ConcurrentDictionary是线程安全类,是什么在保证? 内部类
阅读全文
c# class struct区别
摘要:一句话,前者引用类型,后者值类型,适合高性能的情况,但不可存储大数据。
阅读全文
virtualbox安装增强功能时【未能加载虚拟光盘】
摘要:进入系统在侧边找到如图加载的虚拟光驱,右击,点击弹出,然后就可正常安装增强功能了
阅读全文
ThreadLocal<T> 类
摘要:using System; using System.Threading; using System.Threading.Tasks; class ThreadLocalDemo { // Demonstrates: // ThreadLocal(T) constructor // ThreadLo
阅读全文
外部别名
摘要:可能必须引用两个具有相同完全限定类型名的程序集版本。例如,可能必须在同一应用程序中使用程序集的两个或多个版本。通过使用外部程序集别名,可以将来自每个程序集的命名空间包装在由别名命名的根级别命名空间中,从而使这些命名空间可以在同一文件中使用。 注意 extern 关键字还用作方法修饰符,声明用非托管代
阅读全文
栈帧
摘要:栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。 从逻辑上讲,栈帧就是一个函数执行的环境:函数参数、函数的局部变量、函数执行完后返回到哪里等等。 实现上有硬件方式和软件方式(有些体系不支持硬件栈) 首先应该明白,栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个
阅读全文
readonly const
摘要:readonly:只读域,只能在初始化--声明初始化或构造器初始化--的过程中赋值,其他地方不能进行对只读域的赋值操作,否则编译器会报错。只读域可以是实例域也可以是静态域。只读域的类型可以是C#语言的任何类型。 const:不变常量,const修饰的常量必须在声明的同时赋值,而且要求编译器能够在编译
阅读全文
多线程的安全性
摘要:多线程访问之所以出现不安全,不确定的根本原因是因为访问时序被打乱,导致一些操作的依赖条件变化。 例如: var dict=new dictionary(); …… thread0 if(dict.containskey("key0")) { …… } thread1 dict.remove("key
阅读全文
程序集
摘要:一个“强命名程序集”具有 4个重要 attributes ,它们共同对程序集进行了 ,它们共同对程序集进行了 唯一 性 标识:一个文件名( 不计扩展)、一个版本号、一个语言化标识、一个公钥。 "MyTypes, Version=1.0.8123.0, Cult ure=neutral,PublicK
阅读全文
js练习 closure
摘要:window.onload = function() { for (var i = 1; i < 4; i++) { var id = document.getElementById("a" + i); //id.onclick = (function(i) { // return function
阅读全文
js练习 原型
摘要://var a = { // fun: function a() { // test = 0; // alert(this); // b(); // function b() { // alert(this); // var v = 0; // } // } //}; //a.fun(); Func
阅读全文
http压力测试工具
摘要:jmeter 性能不敢恭维,优点是图形化,windows可以用 ab 运行于linux ab -T "application/json" -n 100000000 -c 60 -v 3 -p json.bin -T:header -n:请求总数 -c:客户端数 -v:日志打印级别 -p:要发送的数据
阅读全文