您的位置:首页 > 职场人生

黑马程序员_类的一些边缘知识

2014-06-17 11:30 190 查看
1.值类型的引用传递

值类型传递的是副本,而不是地址,只需要在方法中的参数列表中参数前加ref或out就可以实现引用传递,影响原值。

两者的区别是:

ref : 要求使用前先赋值,初始化参数,在方法中随意

out: 使用前可不赋值,但要求在方法中要赋值。

2.静态构造函数

编写静态构造函数的一个原因是:类有一些静态字段和属性,需要在第一次使用类之前,从外部源中初始化这些静态字段和属性。它没有访问修饰符,其他C#代码从来不调用它,但在加载类时,总是由.Net运行库调用它(确保了静态构造函数至多运行一次,即在代码引用类之前调用它)。静态构造函数不带任何参数,一个类只能有一个静态构造函数,静态构造函数只能访问类的静态成员,不能访问类的实例成员。

但它可与无参的实例构造函数同时出现在一个类中,不矛盾。前者是在类加载时执行,后者是在创建实例时执行。

如果类只包含静态的方法和属性,那么此类就是静态类

static class A

{

public static void Open()

{}

}

使用类型名调用方法:A.Open();

3.匿名类型

var用于表示隐式类型化的变量,与new一起创建匿名类型,即一个继承自Object且没有名称的类。

例 var caprain=new{FirstName="James",MiddleName="T",LastName-"Kirk" };

var caprain=new{ person.FirstName,person.MiddleName,person.LastName};

person是类的一个实例。

4.Object.ToString()方法

声明为虚方法,如果不在自己定义的类中重写他,该类将只继承System.Object的实现方式——它显示类的名称,重写他,这个方法必须生命为override

5.扩展方法

他是静态方法,由于某种原因,程序集最初的源代码不能直接修改,必须创建一个类,把方法添加为一个静态方法

public class AExtension

{

public static void AddToOpen(this A a,sting b)

{

a.Open+=b;

}

}

第一个参数是要扩展的类型,放在this关键字后,告诉编译器,此方法是A类的一部分。

PS:虽然此方法是静态方法,也要使用标准的实例方法语法,用对象去调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: