回顾数组
交错数组
交错数组其实就是一维数组。
不管哪类数组,都是属于引用类型。
每一个元素都是String数组类型。
复习可变参数,ref、out
params是一个可变参数,关键字。(本人认为只要需要输入一个不确定的数组,则使用params修饰,不带有数组的则不用)
1.params只能修饰方法的参数,参数必须是一个1维数组。
2.参数列表中最多只能出现1个可变参数,并且必须要在参数列表的最后一个。
3.调用时候,因为参数是一个数组类型,所以可以传入1个数组
4.在调用的时候,还可以直接传递参数数组的元素。
ref
1.ref是用来修饰方法的参数的
2.调用的时候,给ref赋值,不能赋值1个常量,只能给变量。变量前面也要加一个ref
3.在给ref参数赋值的时候,赋值的是变量的地址。
4.ref在方法中可以对其值不修改。
5.ref在传递之前必须赋值。
out
1.out 必须在方法结束之前为其赋值 / 在方法中如果要使用out必须先为她赋值
2.out在调用之前,不可以赋值,因为在方法中一定会为其赋值
3.out侧重于输出。
类与对象
对象:现实世界存在的具体实例,皆有各自的状态和行为。
类:1.具有相似的状态和行为的集合(类一种数据类型)
2.类是一种复杂的数据类型,是将不同类型的数据和与这些数据相关的操作封装一起的集合体。
面向对象的思维来设计类:转换思维,多加练习。
构造方法
1.访问修饰符一般情况下是public,没有返回值(void都不用写),方法的名称与类名一致。
2.构造函数在创建这个对象的时候,被自动调用,程序员无法手动调用。
3.构造函数作用用于初始化对象的值。
4.构造函数调用其他的构造函数。
5.this关键字代表当前对象,当前运行在内存中的那一个对象;this.还能调用其他构造函数
6.构造函数可以重载。
7.构造函数中可以调用普通的方法,但是请记住,构造函数不能再普通方法中调用。
8.如果1号构造函数调用另外2号构造函数,在创建类的对象时候,如果调用的是1号构造函数,会先调用1号构造函数,在调用2号构造函数。
先执行2号构造函数,在执行1号构造函数。
9.如果程序员没有为类手动的添加任意的构造函数,那么C#编译器在编译的时候,会自动的为这个类生成1个无参数的空方法体的构造函数,隐式构造函数。
10.一旦程序员为类手动添加了构造函数,那么C#编译器在编译的时候将不会自动为类添加无参数的构造函数
构造函数调用其他构造函数
public Dog(int age,string name):this(1)
{
.....
}
public Dog(int age)
{
....
}
部分类
被partial关键字修饰的类,叫做部分类,伙伴类。
1.将类里面在成员物理上分开。
2.使用partial关键字修饰的类,并且类名一样
3.编译成程序集的时候会将他们编译在一起。
什么时候要用部分类?
例子:winform里面Form1里面就分开。
行为与长相分开。
namespace XXXX
{
partial class Program
{
int num;
}
partial class Program
{
public void Test()
{
this.num; // 能够访问。
}
static void Main(string[] args)
{
}
}
}
值类型与引用类型
值类型:
所有的数值类型、char、bool、枚举、结构
引用类型:
string、数组、类
区别?
值类型储存在栈内。
引用类型储存在堆中。
NULL
1.只有引用类型的变量才可以是NULL
2.引用类型的变量的值如果是null,就代表这个变量不指向堆空间中的任何对象。
常量与只读变量
const 数据类型 常量名称 = 值;(一旦声明,值不能改变)
1.不能修改常量的值,必须赋初始值。编译必须赋值。
2.使用到常量的地方在编译的时候会直接替换成常量的值。
3.C#编译器在编译时候,声明常量的那句话不见了,在使用常量的地方就用常量的值替代了。
4.提高运行效率
Readonly(只读变量)(在类中定义)
1.只能在构造函数中改值
2.常量在编译时确定常量的值,只读变量是在运行时确定的值。
3.建立Readonly值的时候,编译器会放在构造函数里面定义。
枚举
枚举是一组具有描述性的名称
1.定义一组有限的值,不包括方法
2.对可能的值进行约束
3.确定数量、确定值的几个取值。
定义枚举的语法
访问修饰符 enum 枚举名
{
枚举成员
}
枚举数表示的整数值:初始值默认从0开始。
枚举的成员不需要引号引起来,直接写就可以。
给枚举类型赋值的时候,只能通过枚举点出来。
枚举是一个值类型。
每1个枚举成员都对应了1个整型的数值,这数值默认从0开始依次递增。
通过强制转换得到该枚举值所代表的数值。Direction dir = Direction.West; int i= (int) dir;
通过强制转换将1个整型的数字强制转换成其所代表的枚举值。int i=3; Direction dir = (Direction) i;
手动为每1个枚举成员进行赋值。
字符串转化成枚举值
string str = "East";
Direction dir = (Direction) Enum.Parse(typeof(Direction),str,true); // 忽略大小写的转换
将枚举值转换字符串,ToString();
将枚举值转换成所对应数值的字符串;string s = d.ToString("d");
ToString(“?”)知识补充:
确定枚举值的类型
enum Direction : byte
{
East = 19;
South = 0;
West = 2;
North = 3;
}
默认枚举值是int类型,这次可以改变类型(必须是整型,byte、int、short、long)