C#自学笔记_005_Real
方法(函数)
ref参数
params参数
小练习
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Csharp005
{
class Program
{
static void Main(string[] args)
{
//1、方法中的ref参数:
//能够讲一个变量带入一个方法进行改变,改变完成后,再将改变的值带出方法
//ref参数要求在方法外就必须为其赋值,而方法内可以不赋值!!
//封装一个方法,使其两个整数变量进行交换
int n1 = 10;
int n2 = 20;
Program.Temp(ref n1, ref n2);
Console.WriteLine(n1);
Console.WriteLine(n2);
//2、方法的params参数
//将实参列表中,跟可变参数数组类型一致的元素都当做数组的元素去处理
//params可变参数必须是形参列表是参数列表中的最后一个元素
//形参列表最多只能有一个params可变参数
//练习1:求张三成绩的总成绩
//int[] score1 = { 98, 76, 89, 98, 95, 92, 90, 100, 65, 86, 92, 95 };
Program.Test01("张三", 98, 76, 89, 98, 95, 92, 90, 100, 65, 86, 92, 95);
//3、方法的重载
//概念:方法的名称相同,但是参数列表不同,参数不同分为两种情况:
//(1)如果参数的个数相同,那么参数的类型就不能相同
//(2)如果参数的类型相同,则参数的个数就不能相同
//注意:方法的重载跟返回值没有关系
//例子(方法见下面)
M(10, 20);
M(10, 20, 30);
M("xlz", "NB");
//4、方法的递归
//按f11进行调试以更好理解递归的过程!!
TellStory();
//5、练习1:封装一个方法,是诶能够输出数组的平均值,并且保留两位小数
double[] nums3 = { 12, 23, 34, 64, 76, 4, 32, 5, 3.25, 23, 21, 23 };
double avg1 = Program.Avg(nums3);
Console.WriteLine("{0:0.00}", avg1);
//6、练习2:写一个方法,用来判断用户输入的数字是否为质数,
//再写一个方法,需要用户只能输入数字,输入有误就一直输入
Console.WriteLine("请输入一个整数,我们将判断它是不是质数:");
string str6 = Console.ReadLine();
int num6 = Program.GetInt(str6);
Program.ZhiShu(num6);
Console.ReadKey();
}
/// <summary>
/// 交换两个变量的数值(ref参数练习)
/// </summary>
/// <param name="num1">第一个整数变量</param>
/// <param name="num2">第二个整数变量</param>
public static void Temp(ref int num1, ref int num2)
{
int temp;
temp = num1;
num1 = num2;
num2 = temp;
}
/// <summary>
/// 计算学生的总成绩(params参数练习)
/// </summary>
/// <param name="name">学生姓名</param>
/// <param name="score">学生各科分数</param>
public static void Test01(string name, params int[] score)
{
int sum = 0;
for (int i = 0; i < score.Length; i++)
{
sum += score[i];
}
Console.WriteLine("{0}本次考试的总成绩为:{1}", name, sum);
}
/// <summary>
/// 用于方法重载的三个练习方法
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
public static void M(int a, int b)
{
int sum = a + b;
}
public static void M(int a, int b, int c)
{
int sum = a + b + c;
}
public static void M(string a, string b)
{
string sum = a + b;
}
public static int i = 0;
public static void TellStory()
{
Console.WriteLine("从前有座山");
Console.WriteLine("山上有座庙");
Console.WriteLine("庙里有个老和尚给小和尚讲故事");
Console.WriteLine("讲的是");
i++;
if (i >= 10)
{
return;
}
TellStory();
}
/// <summary>
/// 计算数组的平均值
/// </summary>
/// <param name="nums">输入的数组</param>
/// <returns></returns>
public static double Avg(double[] nums)
{
double sum = 0;
for (int i = 0; i < nums.Length; i++)
{
sum += nums[i];
}
return (sum / nums.Length);
}
/// <summary>
/// 判断输入的数字是否为质数
/// </summary>
/// <param name="s">输入的数字字符串</param>
public static void ZhiShu(int num)
{
for (int i = 2; i < num; i++)
{
if (num % i == 0)
{
Console.WriteLine("{0}不是质数。", num);
return;
}
}
Console.WriteLine("{0}是质数。", num);
}
/// <summary>
/// 判断已输入的内容是否能转换成整数型
/// </summary>
/// <param name="s">输入的字符串</param>
/// <returns></returns>
public static int GetInt(string s)
{
while (true)
{
try
{
int num = Convert.ToInt32(s);
return num;
}
catch
{
Console.WriteLine("只能输入整数,请重新输入:");
s = Console.ReadLine();
}
}
}
}
}