首页 > 学院 > 开发设计 > 正文

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

2019-11-14 16:17:04
字体:
来源:转载
供稿:网友

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参数在方法内初始化。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表