Net学习日记_基础提高_3

回顾数组

交错数组

交错数组其实就是一维数组。

不管哪类数组,都是属于引用类型。

每一个元素都是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)

原文地址:https://www.cnblogs.com/lisong-home/p/7642926.html