|
第三章 对象和类型
一、类和结构的区别
类是存储在堆当中的引用类型,如果需要存储在堆栈上可以在类名后加上Struct,例如类CustomerList是存储在堆上的,当定义类CustomerListStruct则存储在堆栈上。
结构是存储在堆栈中的值类型。
在c#中将java中的成员变量称为字段。
二、类的成员
数据成员:字段、常量、事件
函数成员:方法、属性、构造函数、终结器、索引器
事件与函数的区别:事件就是一个函数,但是它是一个特别的函数,只有在用户激发了某一事件之后才会促使事件的发生,而函数是操作类中数据的某些定义的功能。
方法:
说明1、每个方法都必须要定义自己的访问权限,而不可以使用C++中的块。
说明2、在定义方法时,参数必需包含参数类型和引用名称,例如:(int xx,string yy)
说明3、如果方法有返回值,那么必须要与return一起使用,例如:return(xx+yy)
一个方法可以带有多个return语句,当方法定义为void类型时,可以不要return语句。
方法的调用:分静态方法和非静态方法调用,有JAVA编程经验的老兄都知道了,就不啰嗦了。
参数的传递:所有的参数都是通过值来传递的,但是当传递的是值类型的变量时,不管在方法体中对该变量作了什么改变,都不会影响该变量。但是如果变量传递的是引用类型的值,那么这个值会随着方法体中的引用而改变,例如数组等。字符串虽然是引用类但它例外。
强迫传递引用变量ref的使用:通常是通过值传递变量的,但是如果需要强迫改变传递的值,即转化为引用类型。用法如下: public staic void SomeMethod(int x,ref int y) { //do something here Console.WriteLine({0}/n{1},x,y); } SomeMethod(x,ref y); //在调用函数时也要加上 ref
out关键字:
当函数要返回多个值时,需要通过引用值方式进行返回,前面我们已经知道引用值的传递必须要初始化,是不是每个变量都先初始化再传递,这样显然比较的麻烦,这里我们就可以使用out关键字来简化过程。
下面是一个例子: static int SomeMethod(out int i) { i= 100; } public static int main() { int i; SomeMethod(out i); Console.WriteLine(i); }
|