一、try-catch
简单用法——在try块中获取并使用资源,在catch块中处理异常情况,并在finally块中释放资源
try
{
//有可能出现错误的代码
}
catch
{
//如果try中的代码出现异常,则进去catch中
}
finally
{
//最后执行的代码
}
Console.WriteLine("输入数字");
try//try中写可能会出现异常的语句
{
int num = Convert.ToInt32(Console.ReadLine());
}
catch (Exception ex)//如果上面的代码不出现异常,就不走catch中的代码
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
int[] nums = {3,4,5};
try
{
nums[3] = 90;//超范围了
}
catch (Exception ex)
{
//Console.WriteLine(ex.Message);
throw;//将问题抛出
}
finally
{
Console.WriteLine("无论是否出现异常都会走这里");
}
Console.ReadKey();
☺
二、方法
一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块,每一个C#程序至少有一个带有Main方法的类
要使用一个方法,需要:
1、方法的语法
[访问修饰符] static 返回值 方法名 ([参数列表])
{
方法体
}
2、实例
无方法的前提下:
//早上
//洗碗,刷锅,切菜,放油,炒菜,煮饭,喝杯小酒
Console.WriteLine("洗碗,刷锅,切菜,放油,炒菜,煮饭,喝杯小酒");
//中午
//洗碗,刷锅,切菜,放油,炒菜,煮饭,喝杯小酒
Console.WriteLine("洗碗,刷锅,切菜,放油,炒菜,煮饭,喝杯小酒");
//晚上了
//洗碗,刷锅,切菜,放油,炒菜,煮饭,喝杯小酒
Console.WriteLine("洗碗,刷锅,切菜,放油,炒菜,煮饭,喝杯小酒");
//半夜
//洗碗,刷锅,切菜,放油,炒菜,煮饭,喝杯小酒
Console.WriteLine("洗碗,刷锅,切菜,放油,炒菜,煮饭,喝杯小酒");
有方法之后:
一个电话即可——打给饭店
static void Main(string[] arge)
{
//在本类中调这个方法,可以直接—— 方法名(); 就可以使用
Show();
Console.ReadKey();
}
public static void Show()//此方法无返回值,无参数
//如果方法前加static,就叫静态方法
{
Console.WriteLine("洗碗,刷锅,切菜,放油,炒菜,煮饭,喝杯小酒");
}
3、方法深入
①最简单的方法无参数,无返回值
static void Main(string[] args)
{
Show(); //直接调方法
Console.ReadKey();
}
public static void Show()
{
Console.WriteLine("请输入第一个数");
int num1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入第二个数");
int num2 = Convert.ToInt32(Console.ReadLine());
int number = num1 > num2 ? num1 : num2;
Console.WriteLine("最大值为{0}", number);
}
改进后
static void Main(string[] args)
{
Console.WriteLine("请输入第一个数");
int number1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入第二个数");
int number2 = Convert.ToInt32(Console.ReadLine());
int max = Show(number1, number2);
Console.WriteLine("最大值就是{0},我自己写都行",max);
Console.ReadKey();
}
public static int Show(int num1,int num2)
{
int number = num1 > num2 ? num1 : num2;
return number;
}
再次改进方法里的代码变成:
public static int Show(int num1,int num2)
{
return num1 > num2 ? num1 : num2;
}
②有无参数就在写完方法后,先打半个 括号,看“半张纸”中的方法括号里有无参数,来进行判断
有无返回值就看“半张纸”的左上角是否有void,如果没有void,说明有返回值
返回值类型也看“半张纸”中的提示
//有返回值,为int类型;有参数,为string类型
int num = Convert.ToInt32("3");
//有返回值,为bool类型,有参数,而且是两个,一个是string类型 一个是 out + 变量名
bool result = int.TryParse("3", out num);
//没有参数,有返回值,为string类型
string str = Console.ReadLine();
③命名规则:方法名开头大写,参数名开头小写,参数名、变量名要有意义
方法的调用,对于静态方法,调用有两种方式
如果在同一个类中,直接写名字调用就行了
或者类名.方法名();
return 可以立即退出方法
4、方法练习
static void Main(string[] args)
{
int[] nums = {23, 45, 67, 98, 12};
}
public static void AddArray(int[]numbers)
{
int sum = 0;
int max = int.MinValue;
int min = int.MaxValue;
for(int i = 0; i < numbers.Length; i++)
{
sum += numbers[i];
if(numbers[i]>max)
{
max = numbers[i];
}
if(numbers[i]<min)
{
min = numbers[i];
}
}
Console.WriteLine("最大值为{0}",max);
Console.WriteLine("最小值为{0}",min);
Console.WriteLine("和为{0}",sum);
}
☺
三、局部变量
//public static int _numint = 90;//全局变量
static void Main(string[] args)
{
int number = 90;
Test(number);//通过传参数,可以把这个方法中的值,传到另一个方法中
//传参 返回值
Console.ReadKey();
}
public static void Test(int num)
{
num = num + 3;
Console.WriteLine(num);
}
☺
四、通过返回值传递变量的值
static void Main9(string[] args)
{
//写一个方法,判断一个年份是否是闰年
Console.WriteLine("请输入年份");
string str = Console.ReadLine(); //用来接收 年份
int yearInt = Convert.ToInt32(str);//字符串类型 转 int类型
bool result = Isyear(yearInt);
if(result)
{
Console.WriteLine("闰年");
}
else
{
Console.WriteLine("平年");
}
Console.ReadKey();
}
public static bool Isyear(int year)
{
if(year%400==0||year%4==0&&year%100!=0) //判断闰年的条件
{
return true;
}
else
{
return false;
}
}
改进——有个方法,传过去一个 字符串 返回的是一个数字
static void Main9(string[] args)
{
//写一个方法,判断一个年份是否是闰年
Console.WriteLine("请输入年份");
//string str = Console.ReadLine();
//int yearInt = Convert.ToInt32(str);
int yearInt = OutPutNumber(Console.ReadLine());//调用新的方法
bool result = Isyear(yearInt);
if(result)
{
Console.WriteLine("闰年");
}
else
{
Console.WriteLine("平年");
}
Console.ReadKey();
}
public static bool Isyear(int year)
{
if(year%400==0||year%4==0&&year%100!=0)
{
return true;
}
else
{
return false;
}
}
public static int OutPutNumber(string strNumber) //新的方法
{
while(true)
{
try
{
int number = int.Parse(strNumber);
return number;
}
catch(Exception)
{
Console.WriteLine("输入错误,请重新输入");
strNumber = Console.ReadLine();
}
}
Console.WriteLine();
}