C#inDepth阅读笔记1:C#1特性

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

1.委托

委托是对包含返回值和参数的行为的一种封装,类似于单一方法的接口。

委托是不易变的(就像string),system.delegate下的combine和remove方法都只能产生一个新的委托。这样就可以很安全地传递委托的引用,而不必考虑一致性,线程安全的问题。

委托实现步骤:

(1)声明委托类型:如delegate void one(object two)

(2)具有与委托匹配的方法如:void three(object )

(3)创建委托实例如:one test1=new one(three)

(4)调用: test1.invoke(object )或test1(object)

委托链的返回值是最后一个委托的返回值。

2.对事件的理解:(事件和委托)

事件是对委托的一种封装,就像是一个委托类型的属性。通过只将事件暴露给外部,使外部只能进行add/remove的操作。而字段风格的事件只是一种简写。

3.值类型 引用类型(http://www.tracefact.net/CSharp-PRogramming/Type-Fundamentals.aspx)

值类型主要由两类组成:结构(struct),枚举

结构分为以下几类:

Numeric(数值)类型

整型

浮点型

decimal

bool

用户定义的结构。

结构不能有公开的无参构造函数

引用类型:

class、interface、delegate、object、stirng ,dynamic(数组是引用类型)

变量的值在其声明的位置存储,局部变量的值存储在栈上,实例变量的值存储在实例本身存储的地方。值类型的变量值是其本身,引用类型变量的值是对象实例的引用,而引用实例总是存储在堆中。

所有类型继承自System.Object类型,这是个引用类型,但是只读而不可改变(String也一样),所有值类型继承自System.ValueType,这是个引用类型,但是它的继承除System.enum外都是值类型。

被作为方法的参数传递时,C#默认采用的是值传递(pass by value);添加ref(out)参数后,采用引用传递。

ref参数必须被事先初始化,out参数在方法内初始化。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航