今天在公司值班没啥事,所以就总结了一些东西。我们都知道类和结构,其实他两差不多,大家都知道他两的区别就是存储的方式和访问的方式不一样。类是存储在堆上面的,结构是存储在栈上面的。我们都知道栈的容量是有限的,能存的东西少,他是值类型是存的值本身所以数度会快点,而堆正好相反他的容量大但是存储的是地址,你要是想访问就得通过地址,数度就略慢。结构是存储在栈上的类是存储在堆上的。所以要是小的东西你用结构性能会比较好。结构是不能被继承也不能继承别的,除了他派生自Object,结构也可以访问Object的方法可以重写object中的方法。
参数可以通过引用和值来传递,他两的区别就是通过值来传递,被调用的方法得到的是一个参数的副本,当方法执行完以后变量是没有什么改变的,引用传递相反,你对他的改变是通过地址找到他,然后把他改了,即使方法结束了他的值也变了。在C#中默认情况下所有的参数都是通过值来传递的。当然你要想让他引用传递那就可以用ref这个关键字。他就变成引用传递了。我们需要注意的是,不管你按哪种方式传递,变量都必须初始化,原因就是如果不初始化你的变量可能读到某些为清理的垃圾值,这样的话就完蛋了。做为一个强类型的语言,C#就让你必须初始化,这点很好。你要是不想初始化也行,可以使用out关键字,就不用初始化了。
构造函数其实就是用来初始化字段的。我们都知道如果我们不自己定义构造函数,编译器会自己建一个功能就是初始化字段的值。当我们自己建了一个构造函数以后编译器就不在自己建构造函数。我们都知道构造函数也就实例构造函数和静态构造函数之分。我们要定义一个静态的构造函数就得在前面加上个static,我们都知道静态的构造函数只执行一次,所以当我们的类里面有一些静态的字段和属性的时候我们就可以用它了,我们定义一个静态构造在第一次执行,以后不执行。就像我刚才说的,他只执行一次,所以在外面就不会调用它,不像实例构造你实例化一下就可以调用,他就不能,所以他就用不找修饰符之类的,当然了他也就不能有参数,在一个类里面只能定义一个静态的构造函数。同样静态构造函数只能访问静态的成员。