C#基础2——②try-catch,方法及其深入,局部变量,通过返回值传递变量的值

一、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();
}

你可能感兴趣的:(C#)