黑马程序员-枚举、常量、结构

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

常量 

语法:

const 类型 常量名=常量值;

在定义时赋值,在其他地方不允许赋值

1、可以重复使用

2、防止写程序被恶意修改

★枚举

我们定义一种枚举类型并且在定义这种类型时我们要指定这个类型的所有的值。

语法:

enum 自己起的类型名称{值1,值2,值3…值n} 

枚举的定义,一般和类定义在同一个级别,这样,在同一命名空间下的所有类就都可以使用这个枚举类型了。(方法/类中也可以)

枚举的作用:1)限制用户不能随意赋值,只能在定义枚举时列举的值中选择

2)不需要死记每一个值是什么,只需要选择相应的值

注意:定义枚举时值不能是int类型

枚举类型的变量都可以强制转换成一个int类型。枚举的值在定义时都是有一个默认编号的,编号从0开始。若让其从1开始,只需要在第一个值=1。

◆如何把一个字符串转换成枚举类型

(自己定义的枚举类型)(Enum.Parse(typeof(自枚),"待转换的字符串"));

用户输入的值一定要try-catch.

典型的枚举类型:MessageBox.Show的参数(后面会学到)

★结构的定义

为什么要用结构:

1)比如我们上课讲得为了存储一个人的信息,要声明一组变量,当我们要存储n个人的信息时,就要声明n租变量,麻烦

2)存储一个人的信息的这几个变量之间没有关系,容易记乱

语法:

访问修饰符 struct 结构名 

{

  定义结构成员 //变量和方法

}

定义好一个结构后,就可以直接声明相应的变量了。

声明好变量后,通过变量名.成员名来访问结构的成员

颜色-计算机原理,三种像素 G、 B,每种可表示2^8次方,一共可以表示成

2^24次方。

红色{255,0,0}

绿色{0,255,0}

蓝色{0,0,255}可以调成不同颜色

1字节=1B(Byte)=8位=8bit

计算机能够处理的最小单位

bps b/s bit per second

4月13日

♥数组

数组可以帮我们一次声明多个同类型的变量。这些变量是连续存储的。

数组声明语法:

数据类型[] 数组名=new 数据类型[数组长度]

例如:int[] score = new int[5]

就声明了一个长度为5的数组,叫score。

通俗点说:就是声明了一个数组,里面包含了5个int类型的变量。

数组名:score  里面的5个int类型的变量叫做:数组的元素

如何访问数组:通过下标(索引器)来访问数组。数组名[编号]

比如,我们要向第0个元素赋一个3,可以写成score[0]=3;

int类型的数组一旦被声明后,里面的元素被初始化成0

string和char类型的数组默认值为空(null)

通过 数组名.Length 可以获得数组长度

小技巧:Console.Clear();清屏,用于很多输出

            int sum = 0;

            int[] score=new int[10];

            //对数组中元素进行赋值

            for (int i = 0; i <score.Length; i++)

            {

                Console.WriteLine("请输入第{0}个人的成绩",i+1);

                score[i] = Convert.ToInt32(Console.ReadLine());

                //sum+=score[i];

            }

            //通过一个循环,求数组中所有元素的和

            for (int i = 0; i < score.Length; i++)

            {

                sum += score[i];

            }

            Console.Clear();

            Console.WriteLine("{0}个人的平均成绩为:{1}",score.Length,sum/score.Length);

            //输出数组中的每一个元素的值

            for (int i = 0; i < score.Length; i++)

            {

                Console.WriteLine("第{0}个学生的成绩为{1}分?",i+1,score[i]);

            }

注意:1、可以直接声明时赋初值,int[] nums={5,3,8s}

2、个数与声明数必须一致,也可以对数组个数。

for(int i=names.Length-1;i>=0;i--) 倒着输出数组

例题:

5个元素(2)  6(3)

0-4            0-5

1-3            1-4

2              2-3

规律:

n个元素进行交换

1)需要交换n/2;

2)在一个循环中第i个元素与第n-i-1个元素相交换

3)

♥冒泡排序(排序方法很多)

定义:让数组中的元素两两比较,第i个与第i+1个比较,经过ni-1)遍两两比较,数组能按照预期规律排序。

如果从大到小排序,两两比较用<,成立则交换位置。

规律:

1、n个元素需要比较n-1趟,每一趟两两比较。

2、第i趟比较的次数为n-i

for (int i = 0; i < scores.Length - 1; i++)//控循环比较的趟数,循环一次相当于比较一次

            {

                for (int j = 0; j < scores.Length - i - 1; i++)//控制第趟需要两两比较的次数

                {

 

                }

            }

♥方法(函数):用来复用代码

功能:当我们在一个程序中反复写了同样的代码,那么一般情况下,我们可以把需要重复的代码写在一段代码里,只需要调用就行。方法是将一堆代码进行重用的一种机制,方法就是一种代码,这段代码可能有输入的值(参数),可能也有返回值。

定义方法的语法:

public代替访问修饰符

[访问修饰符][static] 返回值类型 方法名([参数])

{

  方法体;

}

注意:1)一般情况下方法一般要定义在类中

2)如果方法没有返回值,返回值类型写void

3)方法名的命名规则:方法名开头大写,参数名开头小写,参数名、变量名要有意义,如果方法名没有参数,小括号不能省略

4)方法的调用,对于静态方法,类名.方法名(),如果在同一个类中,直接写名字调用就行了

5)return可以立即退出所在的方法,无返回值的可以不用写return;有返回值必须手写return。

6)当形参是数组时,传数组名;如果不是数组名,而是几个元素,就将数组名加下标。

逐语句(F11)逐过程(F10):

逐过程当遇到方法调用时不再进去,逐语句:当遇到方法调用时进去调试

★Reflector可以看到微软封装的代码

♥参数

变量的作用域:

在方法中定义的变量成为局部变量,其作用域从定义开始到其所在的大括号结束为止。

在方法中访问局部变量,可以通过参数来。当被调用者想得到调用者方法中的变量时,则可以让调用者以参数的形式给被调用者

一个变量一旦定义在方法外,类的里面就叫做字段。这个变量就可以被本类的所有方法访问。但是要注意,静态方法只能访问静态字段。

由const修饰的常量不能声明为static,但可以被static方法访问。

在方法名后面的括号内定义的变量叫做定义这个方法的参数(形式参数)。

在这里定义变量用于接收调用者传过来的数据。

注意:如果一个方法一旦有参数,那么调用者就必须传参数,并且传参数的个数与对应位置上的类型必须一致。

     int.Parse(string)可以把string类型转化成int类型,作用等同于Convert.ToInt32();

每种类型都有其Parse,即转化成相应的类型

♥返回值

当调用者想访问方法中的变量时,可以通过返回值返回。

例如:

string s=Console.ReadLine();

int i=ConvertTOInt32("2");

为什么方法前面能够定义一个变量接收到方法的值,是因为在方法中使用率返回值。

只要在方法中返回了值,那么在调用方法时前面就应该用一个变量来接受方法的返回值。

注意:一个方法只能有一个返回值。

一旦一个方法有返回值那么在这个方法体中就必须通过return语句返回一个值,并且这个值与返回值类型是相同的

语法: return 值;

♥方法的重载

一般在同一类中,方法名相同,并且方法的参数个数不同,或者对应位置上的类型不同,才能构成重载。

注意:方法的重载和返回值没有任何关系

★方法如何返回多个值?

可以通过参数来返回:out参数和ref参数(*)。

1、在方法参数前加out往外出传参,调用方法时也需要加out代表接受参数。

2、如果参数前有out准备传出,方法中必须对参数赋值,并且在使用前赋值,也必须有返回值。

3、如果参数是以out传入的,在传入前可以不用赋值

int.TryParse(string ,out int );返回值为bool类型,先检测后转换,第二个参数为转换后的int类型,并且传出。

ref表示引用传递,或者表示以地址的形式传递,既可以往外传值,也可以往里传值。

out注重传出,ref是双向的

在传参过程中,如果参数有out或ref修饰的话,那么改变方法中参数的值,调用者方法中变量的值也会相应改变。

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

详细请查看:http://net.itheima.com/



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值