----------------------以下为我在黑马程序员学习期间整理的笔记和心得,期待与您交流! ----------------------

--1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

-引用命名空间

--2

namespace 追溯
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

-定义了一个命名空间,叫:追溯

--3

    class Program
    {
        static void Main(string[] args)
        {
        }
    }

-定义了一个名称为Programm的类

--4


        static void Main(string[] args)
        {
        }

-这是一个方法,叫做Main

--5

.sln是解决方案文件

--6

.csproj是项目文件

--7

Console.WriteLine("你想显示的内容");

--8

Console.ReadKey();

当程序执行到Console.ReadKey();时,程序会停到这里,等待用户从键盘上键入后,程序才继续执行

--9

WriteLine,光标出现在下一行

--10

Write,光标出现在这句话后面

--11

第一种:单行注释,以//开始,到本行结束

第二种:多行注释/*开始 /*结束,之间的都为注释

第三种:文档注释,用于对类和方法进行注释

,在类或方法前面连续输入3个/

--12

namespace 我的第一个项目

{

/// <summary>

/// 在这个类中有一个Main方法,使我们程序的入口方法。

/// </summary>

--13

 class Program
    {
        /// <summary>
        /// 程序运行时,从这里执行代码
        /// </summary>
        /// <param name="args"></param>

--14

Home 无论光标在哪,按下后跳转到该行最前面

--15

End 无论光标在哪,按下后跳转到该行最后面

--16

Page up 上翻一页

--17

Page down 下翻一页

--18

Shift 选中多个字符

--19

Ctrl+End 整个文档最后面

--20

Delete 删除光标后面的

--21

Backspace 删除光标前面的

--22

Insert 覆盖字符

--23

over 插入字符

--24

Ctrl Z/X/C/V 撤销/剪贴/复制/粘贴

--25

F5调试程序

--26

.F6生成程序

--27

#Region和#Endregion 折叠语段

#region 我的第一个程序

Console.WriteLine("***************************");

Console.WriteLine("*   这是我的第一个程序 *");

Console.WriteLine("***************************");

Console.ReadKey();

#endregion

--*

CLR:公共语言运行时

CLS:公共语言规范

CTS:通用类型系统

JIT:即时编译器

--28

用户存储正在运行的程序数据(不准备)

RAM:内存有个特点,断电后里面的数据丢失。

变量:变量代表着一块内存空间,我们可以通过变量名称向内存存/取数据,有变量就不需要我们记忆复杂的内存地数据类型

--29

整数字在C#中的数据类型叫做INT

int  number

number=1000   //把1000放进去

赋值: 变量名=值

PS:number加引号显示number,不加引号显示值

--30

1.A.整型:int

......

B.非整型:double   (小数)

decimal  (金钱)

2.非数值

char

String

--31

nt 所包含的值前后20万

double:小数

char:字符型 只能存储一个字符,并且存储的这个字符要求用单引号引起来

string:字符串   把0个或1个或多个字符连接以来,字符串要求用双引号连接起来

int: 3 5 100

double:  3.14   10.5   -3.14

char:   'A'   'b'   'a'

string:  "zhangsan"   "李四"  "计算"

decimal:(存储金钱)5.26

__decimal d=5.55m

十几位以上的数字用decimal

十几位以下用double

注意:在C#开发环境中,直接写一个有小数点的数字,这个数字是double类型的。

在一个小数后面加一个m/M,就告诉编译器这个数字是decimal。

--32

变量声明的三种方法:

1.先声明后赋值   int a;  a=3

2.定义变量时直接赋值   int a=3;

3.可以一次声明多个同类型的变量,多个变量之间用,相隔最后以;结束

string zsname, lsname, wwname;

zsname = "zs";

lsname = "ls";

wwname = "ww"

--33

变量的命名规则:

1.必须以“字母”或@符号

2.后面可以跟任意“字母”,数字,下划线

注意

1.起的变量名不要和c#系统中的关键字重复(关键词会变为蓝色)

2.在c#中,大小写是敏感的

3.同一个变量名不允许重复定义(不严谨)

--*

c#变量名编码规范

Camel  命名法:

首个单词的首字母小写,其余单词的的首字母大写

Pascal ,命名规范:

每个单词的第一个字母都大写

如果使用到英文单词的缩写,全部使用大写

--34

赋值运算符:=

a=a+1; 这里的=号是赋值运算符,不是数学意义上的相等。

变量可以重复赋值,一旦给一个变量赋了新值,那么变量中的老值就不复存在了。

右边代码的输出结果:

int age = 10;

age = 20;

Console.WriteLine(age);

--35

“+”在C#中有两个意义

1.是数学中的加法运算:两边参与加法运算的数据类型为数字类型,则“+”表示数学上的加法的意义

2.是连接意义:两边参与加号运算的数据,有一个是字符类型,那么这个“+”就是连接意义

string a = "1";

int b = 2;

Console.WriteLine(a+b);

输出的值为12

--36

在Conslole.Writeline("")中,第一个变量/字符串中可以使用占位符

占位符由{数字}组成,数字由0开始编号

第一个占位符:{0}

第二个占位符:{1}

第三个占位符:{2}

--37

长数字用string

string wname="张三";

int wage=18;

char wsex='男';

string phone="010-110-2";

Console.WriteLine("我叫{0},今年{1}岁了,性别{2},电话{3}",wname,wage,wsex,phone);

--38

变量交换

int a = 10;

int b = 5;

int temp;

temp = a;

a = b;

b = temp;

Console.WriteLine("a={0},b={1}",a,b);

--39

用于让用户从键盘上输入一句话,当程序执行到下面这句话,就会暂停,然后等待用户从键盘上输入一句话,按回车程序会继续执行。如果想得到用户输入的内容,就

需要定义一个string类型的变量,写在下面这句话前面接受用户输出的内容。

Console.ReadLine().

---40

用户输入

接受用户输入的内容,必须定义一个字符串来进行接受

string input=Consloe.ReadLine();

--41

在屏幕上显示:c#用的字符用“”包含起来

\+一个字符,组成转义字符,他由一个+一个字母来组成具有特殊意义的一个字符

Console.WriteLine("c#中的字符要用\"\"引起来");

c#用的字符用“”包含起来

--42

\n  换行

Console.WriteLine("1\n2");

--43

\b baskspace 退格

Console.WriteLine("1\b2\b3");

--44

\t tab键 由多个空格组成的一个字符,具有行与行之间的对其功能

Console.WriteLine("1\t2\t3\t4\t5\t");

Console.WriteLine("1\t22\t333\t4444\t55555\t");

--45

\\ 表示一个

--46

在字符串前面加@符号有两种意义

1.字符串中如果有,则不再理解为转义符。

Console.WriteLine(@"C:\Users\Zank\Desktop\NET听课笔记");

2.使字符串可以换行

Console.WriteLine(@"C:\Users\Zank

\Desktop

\NET听课笔记");

如果字符串前面加了@符号,在字符串上用两个双引号代表一个双引号

Console.WriteLine(@"C:\Users\Zank""\Desktop\NET听课笔记");

--47

算术运算符及算数表达式

算术运算符: + — * / % (去余数 取模)

算数表达式:由算数运算符连接起来的式子。如:1+1  a-b  (变量ab前面已经声明并赋初值)

优先级:先乘除,后加减,有括号先算括号里面的,相同级别从左至右运算

小括号可以无限制的套用,但一定要成对出现。

int chinese = 90;

int math = 80;

int english = 91;

int sun = chinese + math + english;

int avg = sun / 3;

Console.WriteLine("您的总成绩是{0},平局成绩是{1}", sun, avg);

--48

发生自动转换的条件

1.参与运算的两个数据类型必须相兼容

2.必须一边的数据类型表示范围小,一边的范围大,比且把小的转向大的不丢失精度

Double中包含int

//int a = 10, b = 3;

//int mod = a % 3;   【%取余数,输出1】

//double quo = a / b; 【/取模,输出3,将int转化为double类型】

//Console.WriteLine("mod={0}   qup={1}", mod, quo);

--49

一个表达式,如果其中一个操作数为double类型,那么整个数为double类型(double的精度为15)

int a = 10, b = 3;

int mod = a % 3;

double quo = 1.0*a / b;

Console.WriteLine("mod={0}   qup={1}", mod, quo);

--50

这里quo输出的值为3.333333333333333,为double类型,这是double除以double,如果为int除以double则显示3

--51

Convert不再仅是内存级别的转换,而是老驴数据意义的转换。

Convert是一个加工、改造的过程

Convert.ToInt32(待转换字符串)

Convert.Tostring每种类型都还有.ToString()方法

一切类型都可以转换成为string类型

--52

int 变量=Consvert.ToInt32(待转字符串)

上面语句的意义:把待转字符串转换成int类型后赋给变量

string strsCore="90";

int iScore = Convert.ToInt32(strScore);

--53

把strScroe转化成int类型并且付给iScroe

Console.WriteLine("请输入你的语文成绩?");

string chinese = Console.ReadLine();

Console.WriteLine("请输入你的数学成绩?");

string math = Console.ReadLine();

int chineseScroe = Convert.ToInt32(chinese);

int mathScroe =Convert.ToInt32(math);

--54

缩写直接赋值

int chinese =Convert.ToInt32( Console.ReadLine());

Console.WriteLine("你的总成绩为:{0}",chineseScroe + mathScroe);

--55

如果try中的代码没有出错,则程序正常运行try中的内容后,不会执行catch中的内容

如果try中的代码一旦出错,程序立即跳入catch中去执行代码,那么try中的出错代码后面的内容

try

{

Console.WriteLine("请输入你的语文成绩?");

int chinese=Convert.ToInt32(Console.ReadLine());

Console.WriteLine("请输入你的数学成绩?");

int math = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("你的总成绩为{0}",chinese+math);

}

catch

{

Console.WriteLine("你刚刚输入的代码有问题,请重新输入");

}

Console.ReadKey();

--56

//编程实现计算几天(如46天)是几周零几天.   46/7...4

Console.WriteLine("请输入你要计算的天数?");

int days = Convert.ToInt32(Console.ReadLine());

int week = days / 7;

int mod = days % 7;

Console.WriteLine("{0}中共有{1}周{2}天",days,week,mod);

Console.ReadKey();

--57

//编程实现107653秒是几天几小时几分钟几秒钟?

int seconds = Convert.ToInt32(Console.ReadLine());

int day = seconds / (3600 * 24);

int mod = seconds % (3600 * 24);  //除去上面的天数还剩多少秒

int hour = mod / 3600; //看看剩余的秒数中海油多受啊3600秒

int min = mod / 60;   //看看剩余的秒数中除去上面算的小时,还剩余多少时间

int second = mod % 60;

Console.WriteLine("{0}秒中共包含{1}天{2}小时{3}分钟{4}秒",seconds,day,hour,min,second);

Console.ReadKey();

--58

++ 自加一 有前加和后加

-- 自减一 有前减和后减

int age = 18;

age = age + 1;

age++;

age--;

Console.WriteLine("age={0}",age);

Console.ReadKey();

int age = 18;

int sum = age++ - 10;

Console.WriteLine("age={0}", age);

Console.WriteLine("sum={0}", sum);

Console.ReadKey();

//输出:age19   sum8

上面代码中age是后加,所以在进行语句运算时,age++取原值参与运算,所以sum=8

int age = 18;

int sum = ++age - 10;

Console.WriteLine("age={0}", age);

Console.WriteLine("sum={0}", sum);

Console.ReadKey();

//输出:age19   sum9

上面代码中age是欠佳,所以在进行语句运算时,++age取加一后的新值参与运算,所以sum=9

int age = 8;

int sum = age++ - 10;

相当于:

int age = 18;

int sum = age - 10;

age = age + 1;

int age = 8;

int age = ++age - 10;

相当于:

int age = 18;

age = age + 1;

int sum = age -10

--59

c#中一元二次运算符高于二元二次匀速符

int var1;

int var2 = 5;

int var3 = 6;

var1=var2++ * --var3;

Console.WriteLine("var1={0},var2={1},var3={2}",var1,var2,var3);

Console.ReadKey();

//输出var1=25,var2=6,var3=5.

--60

+=

例如:age=age+3 =  age+=3;

;理解成在age的原值上加3

-=

例如:age=age-3 =  age-=3;

;理解成在age的原值上减3

*=

/=

%=

能够改变变量值的:

++/--

=

--61

关系运算符

在c#中,有6个关系运算符,用于比较两个事物之间的关系。

>

<

==  比较相等

!=  比较不相等

>=

<=

关于表达式:由关系运算符链接起来的式子

--62

布尔(bool)类型

真:ture

假:false

关系表达式的运算结果为bool类型,bool类型只有两个值,一个是ture,一个是false。

如果关系运算表达式成立,则这个表达式的值为ture,否则为false

int zsage = 20;

int lsage = 18;

bool isRight = zsage < lsage;

Console.WriteLine(isRight);

--63

逻辑与运算:&&

bool isRight = 表达式1 && 表达式2

逻辑与连接的两个表达式,要能够求解成bool类型,一般情况都是关系表达式

整个逻辑与运算的结束也是bool类型

表达式1   表达式2  逻辑与结果

ture  tureture

false  false   false

false  ture  false

ture  false false

当两个表达式全为ture时,结果才为ture

int age = 20;

int weight = 120;

bool result = age >= 18 && weight >= 100;

Console.WriteLine(result);

输出的结果为Ture

int age = 10;

int weight = 90;

bool result = age >= 18 && weight >= 100;

Console.WriteLine(result);

输出的结果为False

--64

逻辑与运算:||

bool isRight = 表达式1 || 表达式2

逻辑与连接的两个表达式,要能够求解成bool类型,一般情况都是关系表达式

整个逻辑与运算的结束也是bool类型

表达式1   表达式2  逻辑与结果

ture  tureture

false  false   ture

false  ture  ture

ture  false false

只要有一个为ture,其结果都为ture

--65

逻辑非:!

这是一个一元运算符.

用法:

!(布尔类型的表达式)

作用:

如果:

布尔类型的表达式的表达式为ture,加!号后,其整个式子的结果为false.

布尔类型的表达式的表达式为false,加!号后,其整个式子的结果为ture.

Console.WriteLine(!result);

输出结果想反,真变假,假变真

表达式   !表达式

True False

False Ture

--66

if 结构的基本语法

if (条件)

语句1;

执行过程:

首先判断条件的结果,如果条件为Ture,则执行语句1.如果条件为False,则跳过语句1.执行后面的语句.

注意:

1.if如果括号中的条件,要能计算成一个bool类型的值.

2.默认情况下,if语句只能带1句话.即和if语句有关系的语句只有1.

//if语句基本用法

int a = 3;

if (a > 10)  //这里没有;号

Console.WriteLine("成立");   //if默认只带这一句话

Console.WriteLine("程序结束");   //这句话和if没关系

--67

if-else 结构

语法:

if(条件)

{语句块1}

else

{语句快2}

执行过程:

如果条件为ture,则执行if带的语块1,并且跳过else带的语句块2

如果条件为false.则跳过if带的语句块1.执行else带的语句块2

int score = 95;

if (score >= 90)

{

Console.WriteLine("奖励100元");

}

else

{

Console.WriteLine("不准出去玩,写总结去");

}

--68

在if-esle if语句中,只有当上一个条件不成立时,才会进入下一个if语句并进行if语句后面的条件判断,一旦有一个if后面的条件为ture,则执行此if所带的语句(块),语句(块)执行完成后,程序跳出if-else if结构.如果所有的if条件都不成立,则如果最后有else则执行else,否则什么都不执行.

--69

switch(语法)

switch (语句块)

{

case 值1:语句块1

break;

case 值2:语句块2

break;

default:语句块3

break;

}

--70

执行过程:首先计算表达式,然后根据计算结果与匹配case后面的值.如果有匹配项,则执行匹配后面的语句,直到break语句跳出switch-case,如果所有的case值都不匹配,那么有defanlt则执行default后面的语句,直到break结束,如果没有default.则跳出switch-case,什么都不执行.

default://注意,匹配时和位置没有关系,只和值有关系.

--71

switch:一般只能用于等值比较

if-else of:可以处理范围

--72

while循环的语法:

while(条件) //条件叫:循环条件

{

要循环执行的N条程序; //循环体

}

执行过程:

1.先判断循环条件,如果条件为ture,则转向2,如果条件为false,则转向3

2.执行循环体,循环体执行完后,转向1

3.跳出循环,

循环结束

--73

do-while

语法:

do

{循环体}

while(条件);

执行过程:

1.执行循环体,执行完循环体转向2

2.判断条件是否成立,如果条件为ture,则转向1.如果条件为false,则转向3

3.跳出循环,循环结束

假如循环提交一开始就不成立,对于while循环,一次都不会执行,对于to-while循环体一般至少会执行一次

while:先判断,后执行

do-while:先执行,后判断

--74

检测异常

try

{

}

catch

{

}

如果try中的代码没有出异常,则不会执行catch中的代码

如果try中的代码出现异常,则程序立即跳到catch中

--76

设置断点

单步运行

观察变量

--77

For循环

语法:

for(表达式1;表达式2;表达式3;)

{

循环体

}

执行过程:

第1步 计算表达式1,转向第2步

第2步 计算表达式2(循环条件),如果表达式2的值为ture转向第3步.如果表达式2的值为false,转向第步

第3步 执行循环体,转向第4步

第4步 执行表达式3,转向第2步

第5步 循环结束

一般情况下,表达式1用于定义循环变量和对循环变量赋初值

表达式2:循环条件

表达式3:用于改变循环变量的值

--78

判断输入的是否为数字

Console.WriteLine("请输入一个值");

bool flag = false;

int a = 0;

while (flag == false)

{

try

{

a = Convert.ToInt32(Console.ReadLine());

flag = true;

}

catch

{

Console.WriteLine("你输入的有误,请重新输入");

flag = false;

}

}

Console.WriteLine("你刚才输入的值是:{0}", a);

Console.ReadKey();

--79

1.可以用于switch-case判断中,用于跳出switch

2.用在循环中,用于立即跳出(终止)循环

注意:用于循环中,跳出的是break所在的循环

--80

continue

用于循环中,程序一旦执行到continue语句,立即结束本次循环(就是不再执行循环体中的continue下面的语句),直接进行下一次循环.(do-while/while直接进行下一次循环条件的判断.如果条件成立.则再次进入循环.对于for循环,先执行表达式三,再判断循环条件是否成立!)

--81

三元表达式

表1?表2:表3

执行过程:首先计算表达式1,表达式1应该是一个能够计算成bool类型的值,如果表达式1的值为true,则表达式2的值作为整个表达式的值,如果表1的值为false,则表达式3的值做为整个表达式的值.

表达式2和表达式3的类型一定要相同(相兼)

int a = 10;

int b =20;

Console.WriteLine(a > b ? a : b);

--82

顺序结构:语句顺序执行

分支结构:语句在满足条件下执行

if,if-else,switch-case,表1?表2:表3

循环结构:语句在满足条件下循环执行多次

while,do-while,for

跳转语句

brak,continue,goto

--83

goto语法

goto 标签

标签:

goto myLabel;

Console.WriteLine("a");

Console.ReadKey();

枚举:

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

语法:

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

枚举的定义,一般和类定义在同一个级别,这样,在同一个命名空间下的类就都可以使用这个枚举了

enum Gender

{

男,

}

--84

枚举的作用:

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

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

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

枚举类型的变量都可以强制转换成一个int类型

枚举的值在定义时是有一个默认编号的,编号从0开始.

Gender sex;

sex = Gender.男;

Console.WriteLine((int)sex);

Console.ReadKey();

--85

如果把一个字符串转换成枚举类型:

(自枚)(Enum.Parse(typeof(自枚),"带转换的字符")

--86

为什么要用结构:

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

2.存储一个人信息的这几个变量间没有关系,容易记乱语法:

访问修饰符 struct 结构名

{

定义结构成员

}

--87

0计算机中最小的单位叫"位",bit,比特

就把8个二进制位分成一组,那么8个二进制位叫做 字节

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

1KB=1024B

1MB=1024KB

1GB=1024MB

1TB=1024GB

1Gb=128MB

bps 传输速度 bit per second

--88

数据:可以帮我们一次声明多个同类型的变量,这些变量在内存中是连续存储的.

数组声明语法:

数据类型:

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

Int a;表示声明一个int类型变量

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

这句话声明了一个长度为5的数组,数组叫是score

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

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

int[] score = new int[5];

score[0] = 10;

score[4] = 20;

Console.WriteLine(score[0]);

Console.WriteLine(score[4]);

Console.WriteLine(score[3]);

Console.ReadKey();

--89

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

比如:我们要向第0个元素赋一个3.可以这样写:

Score[0]=3;

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

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

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

int[] score = new int[10];

int sum=0;

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

{

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

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

sum += score[i];

}

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

Console.ReadKey();

--90

Console.Clear(); 清屏

--91

数组演示:

int[] score = new int[5];

int sum=0;

int max=0;

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

{

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

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

sum += score[i];

if (max < score[i])

{

max = score[i];

}

}

Console.Clear();

Console.WriteLine("这几个数中最大值为{0},和为{1},平均数为{2}",max,sum,sum/score.Length);

Console.ReadKey()

--92;

数组传输

Console.WriteLine("请输入你的年龄?");

int age = Readint();

Console.WriteLine("你刚刚输入的年龄为"+age);

Console.ReadLine();

}

public static int Readint()

{

int number = 0;

do

{

try

{

number = Convert.ToInt32(Console.ReadLine());

return number;

}

catch

{

Console.WriteLine("输入有误,请重新输入!");

}

}

while (true);

--93

冒泡排序:

让数组中的元素两两比较(第i个与第i+1个比较),经过n(i-1)遍两两比较,数组中的元素能按照我们预期的的规律排序.

要从大到小排序,我们进行两两比较的时候用<

(从大到小用<,从小到大用>)

N个数需要排n-1趟

第t趟比较的次数为:n-t次

i=0 第一趟

i=1 第二趟

趟数:i+1   t=i+1

For(int i = 0;i>n-1;i++)

{

for(int j = 0;j<n-i-1;j++)

{

int c=a;

a=b;

b=c

}

}

--94

函数就是将一堆代码进行重用的一种机制.函数就是一段代码,这段代码可能有输入的值(参数),可能会返回值.一个函数就像一个专门做这件事的人,我们调用它来做一些事情,它可能需要我们提供一些数据给它,它执行完成后可能会有一些执行结果给我们.要求的数据就叫做参数,返回的执行结果就是返回值.

String s = Console.ReadLine()就是一个有返回结果的函数;

Console.WriteLine("hello")就是一个执行参数的函数,只有告诉WriteLine被打印的数据它才知道如何打印;int i=COnvert.Toint32("22")则是一个既有参数又有返回值的函数.

有了函数写代码就像拼积木,C#中的各种各样的技术其实就是通过for、if等这些基础的语法将不同的函数按照一定的逻辑组织起来.

--95

方法

定义:

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

{

方法体;

}

命名规则:方法名开头大写,参数名开头小写,参数名,变量名要有意义

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

return可以立即退出方法

功能:用来复用代码.当我们在一个程序中反复的写了同样的代码.那一般情况下,我们可以把需要重复写的代码定义在一个方法中,用的时候只需要调用就行了.

定义方法的语句:

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

{

方法体

}

        static void Main(string[] args)
        {
            ShowUI();
            Console.WriteLine("谢谢使用,按任意键退出!");
            Console.ReadKey();


        }


        public static void ShowUI()
        {
            Console.WriteLine("**********************************");
            Console.WriteLine("*     欢 迎 您 使 用 本 软 件    *");
            Console.WriteLine("**********************************");
        }

--96

定义方法的语法:

Public

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

{

方法体

}

注意

1.一般情况下,方法一般要定义在类中

2.如果没有返回值,则返回值类型写void

3.如果方法没有参数,()不能省略

方法的调用:如果是静态方法(由static修饰的)则使用类名.方法名().

在类中调用本调的方法,可以只写方法名();

--97

转类型

int.Parse(string)

--98

在方法名后面的括号内定义变量,叫做定义这个方法的参数.这里定义的变量用于接受调用者传过来的数据

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

        static void Main(string[] args)
        {
            int a = 3;
            Text(a);
            Console.WriteLine(a);
            Console.ReadKey();
        }
        //被调用者
        public static void Text(int a)   
        {
            a = a + 3;
            Console.WriteLine(a);
        }

求两个整数的和(隐性)

        static void Main(string[] args)
        {
            Add(3,6);
            Console.ReadKey();
        }
        public static void Add(int a, int b)
        {
            Console.WriteLine("a+b={0}",a+b);
        }

--99

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

例如:

string s=Console.ReadLine()

int i= Convert.ToInt("22")

为什么方法前面能定义一个变量接受方法的值,是因为方法中使用了返回值

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

为什么使用返回值?因为变量规定了类型而不再是隐性

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

一旦一个方法有返回值,那注在这个方法值中,就必须通过rerurn语句返回一个值,并且这个值要与返回值类型是同样的

语法:

return result;

两个数求和(规定为int (有返回值)):

        static void Main(string[] args)
        {
            Console.WriteLine("请输入第一个数!");
            int a = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入第二个数!");
            int b = int.Parse(Console.ReadLine());
            int sum = Add(a, b);
            Console.WriteLine("平均值为:{0}", sum / 2);
            Console.ReadKey();
        }
        public static int Add(int a, int b)
        {
            return a + b;
        }

--100

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

--101

什么叫方法的重载:

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

实现步骤:

1.在方法的参数类型前面加out,那么传参数的时候,也必须在number钱加out表明这个参数不是传入的,而是i用来传出值的

2.如果参数是以out形式传入的,那么在传入前可以不赋初值.

3.在方法中对于由out修饰的参数,必须赋值,并且必须在使用前赋值

--102

Tryparse

static void Main(string[] args)

{

string s = "123";

int re;

if (int.TryParse(s, out re) == true)

{

Console.WriteLine("能转换成功,转换后的数字为:" + re);

}

else

{

Console.WriteLine("转换失败");

}

Console.ReadKey();

--103

out用于传出值,大方法中必须对out修饰的传数进行赋值

ref双向,既可以传入,也可以传出

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