此格式的方法非常像有返回值方法与有参数方法的结合体(以静态方法为例)
有参数有返回值的方法的格式
//[public] static 返回值类型 方法名(参数列表) 形参
//参数列表 等同与 下面的 参数1,参数2,...
[public] static 返回值类型 方法名(参数1,参数2,...)
{
方法体
return 返回值的类型
}
//方法调用
[类名].方法名(参数1,参数2,...) 实参
方法名(参数1,参数2,...)
//==========对比有返回值无参数=============
[public] static 返回值类型 方法名()
{
方法体
return 返回值的类型
}
与昨天对比最大变化就是可以向方法中传递参数,因此适用范围更广
参数列表,形参,实参的叫法了解即可,本质是通过参数向方法内部传递数据
注意事项:
1之前说过的其他注意事项在此适用,不再赘述
2)传入数据的形参类型与返回值的类型可以一样也可以不一样
示例1:编程实现输入的字符串转换为数字的方法,如果转换失败就一直输入
转换数字方法
//只是将昨天的方法修改一下
//传入参数类型与返回值的类型不同
static int OutputNum(string strNum)
{
int num = 0;
while (true)
{
try
{
num = Convert.ToInt32(strNum);
Console.WriteLine("转换成功");
break;
//如果转换成功执行行号19
//将转换成功的数字返回出去
//退出方法
}
catch
{
Console.WriteLine("输入不是数字,请重新输入");
strNum = Console.ReadLine();
//如果转换失败执行行号17
//执行行号18等待用户输入新的"数字"
//再转到行号8进行转换,转换成功,退出方法
//转换失败重走一遍行号17-21的过程
}
}
return num;
}
//调用方法
static void Main(string[] args)
{
Console.WriteLine("请输入数字");
string strNum = Console.ReadLine();
int num = OutputNum(strNum);
Console.WriteLine("");//换行
Console.WriteLine("输入的数字为 {0}", num);
Console.ReadKey();
}
示例2:编程实现两个操作数进行加减乘除的简易方法,返回值即运算的结果
编程思路(仅供参考)
1)传入三个参数即两个操作数和一个算术运算符(+,-*,/)
2)传入一个复合类型的参数(数组或者结构,规定第一个为操作符,后两个为操作数)
计算两个操作数结果的方法
//传入数组参数返回操作结果
static double Calculate(object[] opeNum)
{
double result = 0.0;
string ope = (string)opeNum[0];
//string strNum1 = (string)opeNum[1];
//string strNum2 = (string)opeNum[2];
//int num1 = OutputNum(strNum1);
//int num2 = OutputNum(strNum2);
//上面注释的4行等同于下面的num3与num4
//因为转换方法只能传入字符串类型
//此方法返回值类型为int
//需要将示例1中行号11的注释掉
int num3 = OutputNum((string)opeNum[1]);
int num4 = OutputNum((string)opeNum[2]);
switch (ope)
{
case "+":
//程序会自动进行隐式类型转换
result = num3 + num4;
break;
case "-":
result = num3 - num4;
break;
case "*":
result = num3 * num4;
break;
case "/":
//没有做除数不能为0的检测
//因此此处可能报异常
result = num3 / num4;
break;
default:
//如果输入的操作符不在
//+-*/中,返回为0
result = 0;
break;
}
//不管上面传入的操作符是否正确
//最后是否正常计算都有返回值
return result;
}
//调用方法
static void Main(string[] args)
{
//最好使用字符串数组
//元素的数据可以使用输入语句
object[] arr = { "*", "8", "6" };
double res = Calculate(arr);
Console.WriteLine("{0} {1} {2} = {3}", arr[1], arr[0], arr[2], res);
Console.ReadKey();
}
方法中有一些非常不合理的代码,其目的只想尽可能多的拓展编程实现方式
如数组使用字符串类型最好,与转换数字方法最契合使用更简便
方法原型
含义:简单来说就是方法格式的第一行代码
//这是一个公共的没有返回值的方法
public static void T1()
//这是一个私有的没有返回值的方法
static void T1()
//这是一个私有的返回值类型为int的方法
static int T1()
//这是一个私有的返回值类型为int
//参数为int 类型的方法
static int T1(int num)
只需通过查看方法原型,即可知道该方法的访问级别,是否有返回值,返回值类型是什么,是否有参数及参数的类型等信息
定义方法时可以首先将方法原型编写出来,有了原型再在方法中编写实现方法功能
将鼠标放在要调用的方法上按F12或右击选择"转到定义"即可查看该方法原型
Console.WriteLine("");方法的原型