C#类型构造器

类型构造器也称为静态构造器,类构造器,或类型初始化器

类型构造器可以用于接口(C#不允许这样做),引用类型,值类型。实例构造器用来设置一个类型某个实例的初始化状态,类型构造器用来设置一个类型的初始化状态。默认情况下,类型没有定义类型构造器。下面展示如何定义值类型和引用类型的构造器:

继续阅读“C#类型构造器”

this关键字小结

this用法如下:

 1.使用this来显示地标识字段的所有者(有点官方味道,看下例子就清楚了)
 class Student
 {
        public string FirstName;
        public string LastName;
        public int Scroe;
        public void SetName(string firstName,string lastName)
 {
               this.FirstName=firstName;
               this.LastName=lastName;
 }
 }

继续阅读“this关键字小结”

区分const,static,readonly,volatile四个关键字

const:表示常量,变量的值是绝不会被改变的,常量的值是在编译时就已经确定了。编译器会把常量的值保存在程序集的元素据里面,在C#里面,下面列举的简单类型才能被定义为 常量:Boolean,  Char,  Byte,  SByte,  Int16,  UInt16 ,  Int32,  UInt32 ,  Int64, UInt64 ,  Single ,  Double ,  Decimal, String。如果定一个引用类型为常量,则必须把该变量的值设为null。因为常量的值是不会改变的,所以常量也常常被认为是定义的类型的一部分。换句话说,常量通常也是静态的。当定义一个常量符号,编译器会在程序集的元素据里面查找它的值,并把值嵌入到生成的IL里面,也因此在运行时,常量不需要分配任何内存。当然,也不能获取常量的地址以及通过引用的方式传递常量。这些限制让常量不能很好的跨程序集版本。

继续阅读“区分const,static,readonly,volatile四个关键字”

引用类型和值类型,装箱与拆箱,对象的相等与同一

引用类型与值类型

在FCL里面的大多数类型是引用类型,引用类型从托管堆上分配内存,值类型分配在线程栈里。new运算符返回对象的内存地址——指向对象的二进制位,使用引用类型时需要清楚下面几点:

继续阅读“引用类型和值类型,装箱与拆箱,对象的相等与同一”

new,is和as运算符解析及运行时类型,对象,线程堆栈,托管堆之间的联系

CLR要求对象必须使用new运算符创建,在使用new运算符创建一个对象时具体都做了些什么呢?

1.计算所有定义的实例字段,所有的基类型包括System.Object需要分配的字节数。

每一个堆上的对象还需要两个额外的成员:类型对象指针同步块索引,CLR使用它们来管理对象。它们两个需要的字节数算在对象的大小里面。

继续阅读“new,is和as运算符解析及运行时类型,对象,线程堆栈,托管堆之间的联系”

C#性能理解以及CTS

关于C#/.NET性能

在上次的例子里面,第二次执行Console.WriteLine()方法时,会完全跳过JITCompiler编译。因为第一次已经完全编译为了本地CPU指令并且返回了指令在内容里的入口地址,所以这一次会直接跳转到该方法的内存地址处执行代码,当然也会比第一次的性能要高。

继续阅读“C#性能理解以及CTS”

CLR执行模型

前言   《CLR via C#》(Jeffrey Richter著)——.NET 界的经典之作,相读”恨晚”,读的过程写点笔记跟大家分享:

我也推荐大家看英文版,能够直接领会原意

认识CLR


个被多种编程语言使用的运行时。核心功能包括:内存管理,程序集加载,安全性,异常处理,以及线程同步。这些核心功能能够被所有以它作为目标平台的语言使
用,实际上,在运行时,CLR并不关心程序员使用哪一种语言编写源码的。微软开发了很多以CLR作为目标平台的语言编译器,

继续阅读“CLR执行模型”

《Pro ASP.NET MVC 3 Framework》学习笔记之三十五 【部署】

准备要部署的应用程序

在正式进入部署MVC程序到IIS之前,会介绍一些关于应用程序迁移到生产环境之前探测错误以及一旦进入生产环境最大化性能的技术。同时也会展示关于流线型部署过程的有用的功能。 继续阅读“《Pro ASP.NET MVC 3 Framework》学习笔记之三十五 【部署】”

《Pro ASP.NET MVC 3 Framework》学习笔记之三十四 【验证与授权】

使用windows验证(Using Windows Authentication)

在软件术语里面,验证的意思是测定身份。这个跟授权是完全分开的,授权是让合适的人做合适的事情,授权通常在验证之后发生。ASP.NET的验证功能也紧紧围绕识别访问者的身份并且设置决定实际的访问者能够做什么的安全上下文 继续阅读“《Pro ASP.NET MVC 3 Framework》学习笔记之三十四 【验证与授权】”

《Pro ASP.NET MVC 3 Framework》学习笔记之三十三 【安全性】

本章会简要阐释对用户而言操纵HTTP请求(例如,修改cookies,隐藏或禁用表单字段等)是多么容易的事情,这会让我们在正确的思维框架下清楚地考虑web的安全性。接着会依次介绍常见的避免攻击的指南,并了解它们的工作原理以及它们怎么应用到MVC框架里面。还会描述如果阻止每一种攻击的形式或者是更换的并设计出来。 继续阅读“《Pro ASP.NET MVC 3 Framework》学习笔记之三十三 【安全性】”

《Pro ASP.NET MVC 3 Framework》学习笔记之三十二 【无入侵的Ajax】

Ajax是Asynchronous JavaScript and XML的缩写,正如我们看到的,XML部分已经不再像过去那样重要,但是异步的部分却让Ajax非常有用。它是一种在后台从服务端请求数据的模型,而不用重新加载网页。 继续阅读“《Pro ASP.NET MVC 3 Framework》学习笔记之三十二 【无入侵的Ajax】”