首页 > 编程语言 >C#基础⑧——方法(函数、重载、out、ref)

C#基础⑧——方法(函数、重载、out、ref)

时间:2022-12-26 19:37:27浏览次数:39  
标签:Console string C# 方法 int num static ref out


目录

​​一、什么是方法(函数)?​​

​​二、使用方法有什么好处呢?​​

​​三、语法:​​

​​四、实战演练​​

        ​​五、ref和out传参的区别​​

​​①、out的传参:​​

​​②、ref的传参:​​

        ​​六、方法的重载​​


C#基础⑧——方法(函数、重载、out、ref)_1024程序员节

 

一、什么是方法(函数)?

函数就是将一堆代码进行重用的一种机制(就是将重复使用的的代码放在一个方法里,谁想用调就行了。)

比喻成职能。比喻成一个生产自行车老板,一个地方专门放螺丝,一个地方专门放轮,一个地方专门放车链子,需要组装什么就从那个仓库里面拿就行了。各司其职。

 

二、使用方法有什么好处呢?

便于修改、增加可读性、可重用、封装

 

三、语法:

访问修饰符 static 返回类型 方法名(参数列表)


四、实战演练

①、请用户输入两个数,判断两数的最大值

class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入第一个数"); //输入第一个数
int number1 = Convert.ToInt32(Console.ReadLine()); //接收用户输入内容,并转换为int类型

Console.WriteLine("请输入第二个数"); //输入第二个数
int number2 = Convert.ToInt32(Console.ReadLine()); //接收并转换为int类型

int max = Show(number1, number2); //调用Show()这个方法,有两个返回值
Console.WriteLine("最大的数是:{0}", max); //输出结果
Console.ReadKey();
}
/// <summary>
/// 此方法用来比较两个数的大小,返回的是最大值
/// </summary>
/// <param name="num1">用来比较的第一个数</param>
/// <param name="num2">用来比较的第二个数</param>
/// <returns>返回的是最大值</returns>
public static int Show(int num1, int num2) //static静态方法,方法名Show,有参数有返回值
{
int number=num1> num2 ? num1 : num2; //判断两个数的大小
return number; //返回结果
}
}

②、从一个整数数组中取出最大的整数、最小整数、总和、平均值

class Program
{
static void Main(string[] args)
{
int[] nums = new int[] { 1,2,3,4,5,6}; //定义一个int类型的数组nums
ArrayNumbers(nums); //调用ArrayNumbers这个有参数的方法,
Console.ReadKey();
}
public static void ArrayNumbers(int[] num) //方法
{
int max = int.MinValue; //定义一个变量max,用于判断最大值
int min = int.MaxValue; //定义一个变量min,用于判断最小值
int sum = 0; //定义一个整数变量,初始值为0

for (int i = 0; i < num.Length; i++) //遍历num这个数组
{
if (num[i] > max) //如果遍历的这个值>最大值
{
max = num[i]; //把这个值赋给变量max
}
if (num[i] < min) //如果遍历的这个值<最大值
{
min = num[i]; //把这个值赋给变量min
}
sum += num[i]; //求和
}
Console.WriteLine("最大值为:{0},最小值为{1},和为{2},平均分为{3}", max, min, sum, sum / num.Length); //在控制台输出结果
}
}

③、计算一个整数数组的所有元素的和

class Program
{
static void Main(string[] args)
{
int[] nums = new int[] { 1, 2, 3, 4, 5, 6 }; //定义一个整型数组nums
int sum = ArraySum(nums); //调用方法ArraySum
Console.WriteLine("和为:{0}",sum); //在控制台输出结果
Console.ReadKey();
}
public static int ArraySum(int[] num) //有返回值的整型方法
{
int sum = 0; //变量,求和
for(int i = 0; i < num.Length; i++) //遍历num这个数组
{
sum += num[i]; //对数组元素的和进行累加
}
return sum; //返回
}
}

④、数组里面都是人的名字,分割成:例如:贝拉|爱德华|雅各布……

class Program
{
static void Main(string[] args)
{
string[] names = new string[] { "贝拉", "爱德华", "雅各布","安妮" }; //string类型数组names
ArrayNames(names); //调用ArrayNames这个方法
Console.ReadKey();
}
public static void ArrayNames (string[] name) //方法
{
string str = ""; //定义一个string类型变量,用于盛放添加字符之后的字符串
for (int i = 0; i < name.Length-1; i++) //遍历数组,
{
str += name[i] + "|"; //循环给每个元素后面加“|”
}
Console.WriteLine(str+name[name.Length-1]); //输出变换后的字符串
}
}

⑤、将一个整数数组的每一个元素进行如下的处理:

如果元素是正数则将这个位置的元素的值+1;

如果元素是负数则将这个位置的元素的值-1;

如果元素是0,则不变

class Program
{
static void Main(string[] args)
{
int[] nums = new int[] { 1, 2, 3, 4, 5, 6 }; //定义一个int型变量nums
ArrayNumber(nums); //调用ArrayNumber这个方法
Console.ReadKey();
}
public static void ArrayNumber(int[] num) //方法
{
for(int i = 0; i< num.Length; i++) //遍历进行判断
{
if(num[i] > 0) //如果这个元素>0
{
num[i]++; //+1
}
if (num[i] < 0) //如果这个元素<0
{
num[i]--; //—1
}
}
for (int i = 0; i < num.Length; i++) //遍历数组num
{
Console.Write(num[i] + "\t"); //在控制台输出结果
}
}
}

⑥、将一个字符串数组的元素的顺序进行反转

{”我“,”是“,“好人”}{”好人“,”是“,”我“}。第i个和第length-i-1个进行交换

class Program
{
static void Main(string[] args)
{
string[] str = new string[] { "我", "是", "好人" }; //定义一个string类型变量
ArrayForr(str); //调用ArrayForr这个方法
Console.ReadKey();
}
public static void ArrayForr(string[] num) //static静态方法,无返回值
{
Array.Sort(num); //Array类,用于对数组元素进行排序
for (int i = 0; i < num.Length; i++)
{
Console.Write(num[i] + "\t"); //在控制台输出结果
}
}
}

五、ref和out传参的区别


 

out

ref

赋初值(方法体内)

必须

不一定(方法内赋初值了,Main可不赋初值;方法内没赋初值,Main必须赋初值)

调用时采用的值

方法内传来的

方法内赋初值:采用方法内的值           方法内没赋初值:采用Main函数的

调用

方法名(out 参数)

方法名(ref 参数)


①、out的传参:

C#基础⑧——方法(函数、重载、out、ref)_数组_02

②、ref的传参:

第一种情况:方法体内没有赋初值

C#基础⑧——方法(函数、重载、out、ref)_初值_03

第二种情况:方法体内赋初值了

C#基础⑧——方法(函数、重载、out、ref)_最小值_04


六、方法的重载

一同二不同(方法名相同,参数个数不同,类型也不同)

①、判断输入的一个数是不是质数


//质数,除了1和它自身外,不能被其他自然数整除的数

Console.WriteLine("请输入一个数"); //在控制台提示输入数字
int numb = Convert.ToInt32(Console.ReadLine()); //接收用户输入的内容
bool result = ZhiShu(numb); //定义bool类型的变量,接收调用ZhiShu方法传回来的内容
string shu = result == true ? "是质数" : "不是质数"; //判断是不是质数
Console.WriteLine(shu); //在控制台输出
Console.ReadKey();

public static bool ZhiShu(int number)
{
for (int i = 2; i < number; i++) //for循环,2是最小的质数
{
if (number % i == 0) //如果输入的这个数和i整除=0
{
return false; //则返回false,不是质数
}
}
return true; //否则,返回true,是质数
}

②、用方法实现int类型,找最大值,最小值


int[] numbers = { 1, 2, 3, 4, 5, 6, 7 };      //定义numbers数组并且赋初值
int max; //最大值
int min; //最小值
FirstNumber(numbers, out max, out min); //调用FirstNumber方法,
Console.WriteLine("最大值为{0}", max); //输出最大值结果
Console.WriteLine("最小值为{0}", min); //输出最小值结果
Console.ReadKey();

public static void FirstNumber(int[] nums, out int first, out int last)
{
first = int.MinValue; //最大值
last = int.MaxValue; //最小值
for (int i = 0; i < nums.Length; i++) //for循环
{
if (nums[i] > first) //如果数字>最大值
{
first = nums[i]; //最大值
}
if (nums[i] < last) //如果数字<最大值
{
last = nums[i]; //最小值
}
}
}

③、实现MyTryParse功能,找最大值,最小值

Console.WriteLine("请输入一个数字");
string strNumber = Console.ReadLine();
int num;
bool result = Program.MyTryParse(strNumber, out num);
bool result1 = int.TryParse(strNumber, out num);

public static bool MyTryParse(string s, out int result) //此方法中有out参数,所以需要给它赋初值
{
result = 0;
try //try catch语句
{
result = Convert.ToInt32(s);
return true;
}
catch
{
return false;
}
}

④、用户只能输入0到100之间的数写一个方法,否则提示超出范围

Console.WriteLine("请输入1-100之间数字");      //提示用户输入
bool result = GetNumber(Console.ReadLine()); //接收用户输入内容,调用GetNumber方法判断输入是否在范围内
if (result ) //如果范围为true
{
Console.WriteLine("在范围内"); //在范围内
}
else //否则
{
Console.WriteLine("不在范围内"); //不在范围内
}
public static bool GetNumber(string str)    //判断用户输入的数字范围是否正确
{
int number = OutNumber(str); //调用OutNumber方法,判断输入
if (number >= 0 && number < 100) //如果输入的数字在0-100之间
{
return true; //则返回true
}
else //否则
{
return false; //返回false
}
}
public static int OutNumber(string s)          //此方法中有out参数,所以需要给它赋初值
{
while (true)
{
try //try catch语句
{
int number = Convert.ToInt32(s); //将接收到的内容转换为int类型
return number; //如果可以转换为int类型,则返回数值
}
catch //如果报异常
{
Console.WriteLine("输入错误,请重新输入");
s = Console.ReadLine();
}
}
}

 

C#基础⑧——方法(函数、重载、out、ref)_最小值_05

标签:Console,string,C#,方法,int,num,static,ref,out
From: https://blog.51cto.com/u_15921176/5970539

相关文章

  • C#基础⑨——字符串(string str = null 与string str = ““的区别)
    一、字符串ToLower、Toupper:大小写字母转换str=str.ToLower():得到字符串的小写形式str=str.Toupper():得到字符串的大写形式sq.Equals(s2,StringComparison.OrdinallgnoreC......
  • SqlCommand.ExecuteNonQuery 方法
    一、ExecuteNonQuery方法是什么?SqlCommand的一个类,用于包含update、insert、delete、select的Transact-sql语句中来修改数据库中的数据,并返回结果。 二、返回的结果是什......
  • c/c++非阻塞键盘输入监听 Windows/Linux
    https://blog.csdn.net/a8821418/article/details/106492074Windows下c代码#include<conio.h>#include<windows.h>#include<iostream>usingnamespacestd;i......
  • linux——screen常用命令
    screen常用命令因为想要在云服务器部署flask服务,但flask不能进行后台服务(退出ssh客户端web服务会自动停止)该工具的作用类似于创建任务窗口后台,如window的多任务窗口安装......
  • [CTF] 攻防世界-xff_referer
    X-Forwarded-For:,,https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/X-Forwarded-For大致理解:就是你有代理服务器,它只能看到你最后代理的那个IP,但是用这......
  • 如何优雅的写 css 代码
    CSS(全称CascadingStyleSheets,层叠样式表)为开发人员提供声明式的样式语言,是前端必备的技能之一,基于互联网上全面的资料和简单易懂的语法,CSS非常易于学习,但其知识点广泛......
  • 在centos上以 All-in-One 模式安装 KubeSphere
    官网地址https://kubesphere.io/zh/docs/v3.3/quick-start/all-in-one-on-linux/第一步:安装依赖socat、conntrackyuminstall-ysocatyuminstall-yconntrack第......
  • MFC应用程序对话框架构
    喜欢大概就是:在我们俩对视的一瞬间,我突然就避开了你的视线,而当你走过去的时候,我却在你背后看了你好久。。。---- 网易云热评一、新建MFC应用程序项目,项目名称不能用中文 ......
  • UML——用例图(Use case diagrams)
    目录​​什么是用例图?​​​​用例图帮我们做什么?​​​​用例图的基本元素有哪些?​​​​第一次机房收费系统用例图​​​​总结​​       一、什么是用例图......
  • Microsoft 365 开发:使用PnP Powershell连接SharePoint Online失败
    Blog链接:​​https://blog.51cto.com/13969817​​​今天小伙伴使用PnPPowershell连接SharePointOnline时,遇到如下错误:ADSTS65001:Theuseroradministratorhasnotco......