C#个人总结2——类和对象

来源:互联网 发布:元数据是什么 编辑:程序博客网 时间:2024/06/06 20:56

类和结构都是创建对象的模板。类是存储在堆上的引用类型,结构是存储在栈上的值类型。

类中的数据和函数称为类成员。数据成员包含字段、常量和事件。函数成员包括方法、属性、构造函数、终结器、运算符以及索引器。

方法

方法中的参数可以是值传递也可以是引用传递。值类型数据是值传递,引用类型数据是引用传递。传递引用的效率更高,但是方法内操作的就是本体对象,而值类型数据在方法内只是一个副本,因此方法内的操作不会影响值类型数据。ref关键字强制参数将引用传递给方法,示例如下:

out关键字功能几乎和ref相同,除了在传递给方法前可以不用初始化。示例如下:

参数一般需要按照顺序传送给方法,命名参数允许按任意顺序传递。比如以下方法:
string fullName(string firstName, string lastName){    return firstName + " " + lastName;}
fullName("James", "Green") 和 fullName(lastName: "Green", firstName: "James")返回的结果是一样的。
可选参数是一种很方便实用的功能,但是它必须放在参数列表的最后,并且必须提供默认值,示例:
int add(int a, int b = 10){    return a + b;}
调用该方法时可以只传递a参数,如:add(6),那么在add方法中,b就取默认值10,若传递了b参数,方法中b就取传递的值。
方法可以进行重载,也就是方法名相同,方法签名不同(参数个数或类型不同)。

属性

属性是一个方法或一对方法,在客户端代码看来,它是一个字段。在属性定义中一般包含一个get方法和set方法,没有get就是只写属性,没有set就是只读属性。get和set必须有一个具有属性的访问级别。

构造方法

声明基本构造函数的语法就是声明一个与包含的类同名的方法, 但该方法没有返回类型。如果没有添加自定义的构造函数,类会自动添加一个无参数的构造函数,如果添加了自定义构造函数,类就不会在自动添加了。
静态构造函数不依赖于对象的创建,它会在创建类后的某个时刻调用(一般在代码引用类的成员之前),但是不确定,因此不应该把某个特定时刻(比如加载程序集)需要执行的代码放在静态构造函数中,也不能预计不同类的静态构造函数按什么顺序执行(静态构造函数中的代码不应依赖于其它类中静态构造函数执行情况),但是可以确保静态构造函数只执行一次。静态构造函数中只能处理类的静态字段或属性。因为只由自己本身调用,所以访问修饰符没有意义,参数列表也没有意义,一个类也只能有一个静态构造函数。





0 0