学习笔记二:对类的一些更深入的研究.
我们都知道 类 是创建一类对象的模板,类中有数据成员和函数成员
数据成员包括:字段,常量,事件。
函数成员包括:方法,属性,构造函数,析构函数,索引器和运算符(operator)
下面我就来具体深入的研究一下函数成员中的各个成员。
方法:
方法的申明:在C#中,方法的定义包括任意的访问修饰符,返回值类型,方法名和方法的参数列表。
[modifiers] return_type MothodName([parameters])
{
//......
}
其中 []表明的地方 可写可不写。
方法分实例方法和静态方法。C#中,方法默认是实例的,除非在方法修饰符后面(返回类型前面)加上一个static关键字来使该方法和该类关联而不是和类的实例关联。
方法的调用:C#中,每一个方法都不是独立存在的,它要么是实例关联,要么和类关联,所以方法的调用就分两种,实例对象调用 或者类调用。
给方法传递参数:ref 将值类型参数强制转化为引用类型,out 传递给方法的参数 可以不需要进行初始化。
方法的重载:方法名相同,返回类型相同,参数列表不同的方法之间就可以叫做方法的重载。
属性:
属性(property):它是一对方法或者是一个方法,但是它在客户端看来 就象是一个字段。
public string SomeProperty
{
get{return someproperty;}
set{someproperty = value;}
}
get访问器不带任何参数,且必须返回属性申明的类型。同样的set也不带任何参数类型。但它的类型直接和你所绑定的字段类型相同。
构造函数:
构造函数是一个没有返回类型,方法名和类型相同的一个方法。它是在实例化对象的时候由.NET自动调用的。它存在的目的是为了初始化实例成员的字段值。
在没有特殊要求的情况下,我们不必显式的在类中定义构造函数,因为C#编译器会在后台默认的给我们提供一个不带参数的构造函数。不带参数的构造函数的
作用就是给对象的字段赋系统自带的默认值。比如int 赋0,引用赋null ,bool 赋false。
但是,如果我们显式的定义了带参数的构造函数,那么编译器就不会给我们默认提供一个不带参数的构造函数了(如果有继承链的话,编译器的这种做法有可能会影响到当前类是否能顺利完成实例化。)
构造函数也是方法,所以它也有静态的。
构造函数是你实例化一次对象的时候,它就执行一次。而静态构造函数则是在加载当前类的时候执行一次。
编写静态构造函数的一个原因是,在第一次使用该类是,需要冲外部源中初始化类的某些静态字段和属性。
.NET运行库不能确定什么时候会调用静态构造函数,也不能确定多个类中的静态构造函数会按什么顺序执行。所以静态构造函数中,不能放一些具有依赖性的数据。
构造函数 没有访问修饰符。它不由我们程序员调用,而是.NET运行库。所有静态构造函数也没有访问修饰符。既然它不为我们程序员所用,所以参数对静态构造函数来说,也没有什么意义。所有静态构造函数也不能带参数。
下面来总结一下静态构造函数的特点:
1:一个类中只能有一个静态构造函数
2:静态构造函数不带访问修饰符(原因第三点)
3:静态构造函数由.NET运行库在加载当前类时调用。
4:静态构造函数只执行一次,构造函数则是实例化一次对象就执行一次。(这里要区别静态构造函数的一次和构造函数一次的区别)
5:静态构造函数没有参数列表(原因第三点)。
6:静态构造函数的执行顺序有.NET来确定,具有不确定性,多个类中的静态构造函数的执行顺序具有不确定性,所以尽量不要把具有依赖性的数据放在静态构造函数里。
7:一个类中可以同事定义构造函数和静态构造函数,它们之间没有冲突,没有联系。
析构函数:
当.NET运行库检测到某个对象将不会在使用的时候,就会调用析构函数。它的何时调用 不是我们程序员能控制的,所以也具有不确定性。
可以再析构函数中做一些 释放资源等操作。
析构函数的申明语法为:
~ 类名()
{
//dosomething here.
}
索引器:
对象如果有数组类型的字段,就可以使用索引器对其进行索引。
public class Student
{
public string[] studenthobbits ={"跳舞","唱歌".....};
}
Student s = new Student();
s.studenthobbits[0]======>跳舞.
运算符:(operator)
运算符;可以使用+,-,*,/的表现模式来使两个对象之间进行数学运算。而并非以前的ADD SUM等方法的定义。
比如我要定义一个两个同学年龄相加的方法。
传统方式:
pubilc int SumAge(student s1,student s2)
{
return s1.age+s2.age;
}
调用方法. S.SumAge(s1,s2);
运算符的方式:
public static int operator +(student s1,student s2)
{
return s1.age+s2.age;
}
调用方法:s1+s2即可。
比传统的方式更加直观。
C#规定 类的运算符必须申明为public 和 static 。
---------------------- Windows Phone 7手机开发、 .Net培训、期待与您交流! ----------------------
详细请查看: http://net.itheima.com/