using System;

namespace ConsoleApp1
{
class Program
{
/// <summary>
/// 求两个参数之间的最大值
/// </summary>
/// <param name="n1">第一个值</param>
/// <param name="n2">第二个值</param>
/// <returns></returns>
public static int GetMax(int n1, int n2)//这里的你n1和n2是形参,形式上的参数
{
int max = n1 > n2 ? n1 : n2;
return max;
}
static void Main(string[] args)
{
int a1 = 22;
int a2 = 33;
int max=GetMax(a1, a2);//这里的a1,a2是实参,实际上存在的参数 不管是形参还是实参,都是在内存中开辟了空间的
Console.WriteLine(max);
Console.ReadKey();
}
}
}

using System;

namespace ConsoleApp2
{
class Program
//读取输入的整数,定义成方法,多次调用,如果用户输入的是数字则返回,否则提示用户输入错误
//注意:方法的功能一定要单一,最忌讳的就是提示用户输入的字眼
{
//public static void Number(string number)
//{
// while (true)
// { // Console.WriteLine("请输入一个数字,我们将它返回");
// try
// {
// int n = Convert.ToInt32(Console.ReadLine());
// Console.WriteLine(n);
// break;
// }
// catch
// {
// Console.WriteLine("请您重新输入");
// }
// }
//}
static void Main(string[] args)
{
Console.WriteLine("请输入一个数字");
string input = Console.ReadLine();
int number = GetNumber(input);
Console.WriteLine(number);
}
/// <summary>
/// 接收用户输入的一个整数并把它输出,如果输入的不是整数则显示重新输入
/// </summary>
/// <param name="s">接收用户输入的一个值 </param>
/// <returns></returns>
public static int GetNumber(string s )
{
while (true)
{
try
{
int number = Convert.ToInt32(s);
return number;
}
catch
{
Console.WriteLine("请重新输入");
s = Console.ReadLine();
}
}
}
}
}

using System;

namespace ConsoleApp3
{
class Program
{
/// <summary>
/// 计算一个数组的总和
/// </summary>
/// <param name="nums">给定数组</param>
/// <returns>返回一个总和的值</returns>
public static int GetSum(int[] nums )
{
int sum = 0;
for (int i = 0; i < nums.Length ; i++)
{
sum += nums[i];
}
return sum;
}
static void Main(string[] args)
{ //定义一个方法,计算一个数组的总和
int[] num = { 1, 2, 4, 5, 3, 6, 7, 8, 9 };
int sums = GetSum(num);
Console.WriteLine(sums);
Console.ReadKey();
}
}
}

out参数的使用

using System;

namespace out参数的使用
{
class Program
{
static void Main(string[] args)
{
///out 参数
///如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组
///但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候我们可以考虑使用out参数
///out参数侧重于在一个方法中可以返回多个不同类型的值
int[] numbers = { 12, 4, 5, 63, 78, 99, 4, 5, 6 };
int max1;//这里不需要赋值是因为在方法里已经赋值过,这里传参之后,参数等同于方法里面的已经赋值的参数
int min1;
int sum1;
int avg1;
string s1;
bool b1;
Avg(numbers, out max1, out min1, out sum1, out avg1, out s1, out b1);
//参数不一定要跟方法里面的一样,只需要方法里面对应位置一样就行,这里是传递参数 Console.WriteLine(max1);
Console.WriteLine(min1);
Console.WriteLine(sum1);
Console.WriteLine(avg1);
Console.WriteLine(s1);
Console.WriteLine(b1);
Console.ReadKey();
}
/// <summary>
/// 建立一个方法,返回一个数组的最大值最小值总和以及平均值
/// </summary>
/// <param name="num">要求值的数组</param>
/// <param name="max">最大值</param>
/// <param name="min">最小值</param>
/// <param name="sum">总和</param>
/// <param name="avg">平均值</param>
/// <param name="s">字符串</param>
/// <param name="b">bool值</param>
public static void Avg(int[] num, out int max, out int min, out int sum, out int avg, out string s, out bool b)//注意这里没有设定返回值
{
//out参数要求方法的内部必须为其赋值
max = num[0];
min = num[0];
sum = num[0];
avg = num[0];
s = "123";
b = true;
for (int i = 0; i < num.Length; i++)
{
if (num[i] > max)
{
max = num[i];
}
if (num[i] < min)
{
min = num[i];
}
sum += num[i];
}
avg = sum / num.Length; }
}
}

out参数小练习

using System;

namespace out参数小练习
{
class Program
{
///题目:分别提示用户输入用户名以及密码
///你写一个方法来判断用户输入的是否正确
///返回给用户一个登录结果,并且还要单独的返回给用户一个登陆信息
///如果用户名错误,除了返回登录结果之外,还有返回一个用户名错误,密码错误
static void Main(string[] args)
{
Console.WriteLine("请输入用户名");
string username = Console.ReadLine();
Console.WriteLine("请输入密码");
string userpassword = Console.ReadLine();
string s;
bool b = IsLogin(username, userpassword, out s);
Console.WriteLine(b);
Console.WriteLine(s);
Console.ReadKey();
}
/// <summary>
/// 提示输入用户名跟密码,返回一个登陆结果加一个登陆信息
/// </summary>
/// <param name="name">输入的用户名</param>
/// <param name="password">输入的密码</param>
/// <param name="message">返回的登陆信息</param>
/// <returns></returns>
public static bool IsLogin(string name,string password,out string message)
{
if (name == "admin" && password == "88888888")
{
message = "登陆成功";
return true;
}
else if (name == "admin")
{
message = "登陆失败,密码错误";
return false;
}
else if (password == "88888888")
{
message = "登陆失败,用户名错误";
return false;
}
else
{
message = "登陆失败,用户名跟密码都错了";
return false;
}
}
} }

params可变参数

 using System;

namespace params可变参数
{
class Program
{
///params可变参数
///将实参列表中跟可变参数数组类型一致的元素都当作数组的元素去处理
///params可变参数必须是形参列表中的最后一个元素,如果它后面还跟其他元素,那它将无法识别最后那个参数是什么
///一个参数列表中只能用一个params可变参数,理由还是必须在最后面的元素
static void Main(string[] args)
{
Test("张三", 99, 88, 77, 66, 44, 33, 22, 11);
Console.ReadKey ();
}
public static void Test(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);
}
}
}

using System;

namespace params参数的使用练习
{
class Program
{
static void Main(string[] args)
{
//求任意长度数组的和,整数类型的
int sums = GetSum(1, 2, 3, 4, 5, 6, 7, 8, 9);
Console.WriteLine(sums);
Console.ReadKey();
}
public static int GetSum(params int[] nums)
{
int sum = 0;
for (int i = 0; i < nums.Length; i++)
{
sum += nums[i];
}
return sum;
}
}
}

ref参数

using System;

namespace ref参数的使用
{
class Program
{
static void Main(string[] args)
{
//ref参数是将变量以参数的形式传递到方法中,变换完成之后再把改变后的值传递出来
//ref参数要求在方法外必须为其赋值,而方法内可以不赋值。因为有值之后才可以在方法内改变
int n1 = 10;
int n2 = 20;
Change(ref n1, ref n2);
Console.WriteLine(n1);
Console.WriteLine(n2);
Console.ReadKey();
}
public static void Change(ref int n1,ref int n2)
{
int temp = n1;
n1 = n2;
n2 = temp;
}
}
}

方法的递归

using System;

namespace 方法的递归
{
class Program
{
static void Main(string[] args)
{
///方法的递归就是重复不停的自我调用,在达到某种条件后结束
///每调用一次,相当于进一个门,用return来跳出方法的时候只能跳出当前的这个门
///如果调用了10次,那么跳出的话也要执行10次,才可以真正跳出程序
TellStory();
Console.ReadKey ();
}
public static int i = 0;//声明一个静态字段,在哪里都能用的那种 public static void TellStory()
{
Console.WriteLine("从前有座山");
Console.WriteLine("山里有座庙");
Console.WriteLine("庙里有个老和尚和小和尚,老和尚讲故事给小和尚听,讲什么呢?");
i++;
if(i>=10)
{
return;
}
TellStory();
}
}
}

方法的调用

using System;

namespace 方法的调用
{
class Program
{
static void Main(string[] args)
{
//在一个函数中调用另外一个函数,称为调用者和被调用者
///如果被调用者想要得到调用者的值
///1、传递参数
///2、使用静态字段来模拟全局变量
///如果调用者想要得到被调用者的值:
///返回值
bool b = IsRun(2000);
Console.WriteLine(b);
}
/// <summary>
/// 判断所给参数是否为闰年
/// </summary>
/// <param name="year"></param>
/// <returns></returns>
public static bool IsRun(int year)
{
bool b = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
return b;
}
}
}

方法的重载

using System;

namespace 方法的重载
{
class Program
{
static void Main(string[] args)
{
//方法的重载
///方法的重载指的就是方法的名称相同,参数不同
///1、如果参数的个数相同,那么参数的类型就不能相同
///2、如果参数的类型相同,那么参数的个数就不能相同
///***方法的重载跟返回值没有关系
Console.WriteLine("Hello World!");
}
public static void M1(int n1, int n2)
{
int result = n1 + n2;
}
public static double M1(int n1,int n2,int n3)
{
n3 = n1 + n2;
return n3;
}
public static string M1(string n1,string n2)
{
return n1 + n2;
}
} }

方法的综合练习

using System;

namespace 方法的综合练习
{
class Program
{
static void Main(string[] args)
{
///用方法实现,有一个字符串数组:
///{“马龙”,“迈克尔乔丹”,“雷吉米勒”,“蒂姆邓肯”,“科比布莱恩特”}
string[] names = { "马龙", "迈克尔乔丹", "雷吉米勒", };
Console.WriteLine("Hello World!");
}
}
}

方法综合练习:out、params、ref的更多相关文章

  1. C# 参考之方法参数关键字:params、ref及out

    如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值.可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值.通过使用方法参数关键字,可以更改这种行为. params ...

  2. c#params ref out

    params params 关键字可以指定在参数数目可变处采用参数的方法参数. 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字. 示例: ...

  3. c#中的Out, params,ref 细说并沉淀

    1. Out,params,ref之前先记录平时用的最多的按值传递参数的情况,当然默认情况下参数传入函数的默认行为也是按值传递的. 1: //默认情况下参数会按照值传递 2: static int a ...

  4. (Gorails视频)使用推广链接(params[:ref]),增加注册用户!

    用一个链接进行用户的注册推广: 我的git:   https://github.com/chentianwei411/embeddable_comments 用途:比如推广,拉朋友注册,给推广码,用这 ...

  5. C#的参数修饰符out,params,ref

    using System; namespace ParamsProgram { class TestParams { public static void Main(string[] args)//s ...

  6. nodejs取参四种方法req.body,req.params,req.param,req.body

    摘要: nodejs取参四种方法req.body,req.params,req.param,req.body 获取请求很中的参数是每个web后台处理的必经之路,nodejs提供了四种方法来实现. 获取 ...

  7. C#总结---方法的out参数和ref参数

    我们知道,在c#中,当我们在一个方法中想要访问另一个方法中的变量的时候,有两种解决方案---参数和返回值.但当需要返回多个值,并且是不同类型的值的之后应该怎么办呢?解决方案可以是 (1)将所有类型数据 ...

  8. 67.nodejs取参四种方法req.body,req.params,req.param,req.body

    转自:http://www.cnblogs.com/jkingdom/p/8065202.html 摘要: nodejs取参四种方法req.body,req.params,req.param,req. ...

  9. 方法的可变参数 params

    当你写了一个方法,这个方法需要对传进来的参数进行加工,但是不确定传递的参数的数量的时候 比如,public void int jiafa(int a,int b){a+b;} jiafa(1,2) 但 ...

  10. C#中引用类型的变量做为参数在方法调用时加不加 ref 关键字的不同之处

    ​ 一直以为对于引用类型做为参数在方法调用时加不加 ref 关键字是没有区别的.但是今天一调试踪了一下变量内存情况才发现大有不同. 直接上代码,结论是:以下代码是使用了 ref 关键字的版本.它输出1 ...

随机推荐

  1. 关于pytest生成测试报告

    之前用pytest集成allure,记录的很清楚确实很好,但是我不知道怎么把生成的所有结果通过邮箱发送 可以使用pytest-html生成的html是这样的 也很清楚 但是!!!!!!!!!!!!!! ...

  2. 清除Linux登录记录

    CentOS cat /dev/null > /var/log/wtmp cat /dev/null > /var/log/btmp cat /dev/null > /var/log ...

  3. CH582m模拟JoyStick使用USB与电脑通信

    目录 本程序改编自沁恒官网2022年1月更新的CH583EVT中的CompoundDev例程.这里只贴了main.c中的程序.能够实现:①直接接电脑,在设备管理器中能够查到被电脑识别为HID-comp ...

  4. Vue3.0 实现数据双向绑定的方法

    ue3.0 是通过Proxy实现的数据双向绑定,Proxy是ES6中新增的一个特性,实现的过程是在目标对象之前设置了一层"拦截",外界对该对象的访问,都必须先通过这层拦截,因此提供 ...

  5. 066_VFPage中Js Button与controller交互方式(一)

    这种方式经常被用来,在button中处理一些逻辑,做法是在detail 页面中加一个button,对应是jS执行调用invoke controller Define a webService meth ...

  6. windows elasticsearch中文乱码

    一:找到安装目录下的config jvm.options文件 二:修改或增加: -Dfile.encoding=GBK 参考文章地址:https://www.shuzhiduo.com/A/rV57O ...

  7. BT做种

    BT方式:BT方式属于P2P传输,客户机之间可互传数据,大大提高传输效率,推荐使用.此处以qBittorrent做种为示例,主要有以下几个要点1.启用内置Tracker(或用其他同类软件代替)2.启用 ...

  8. Mysql之迂回连接术

    转载请注明来源:https://www.cnblogs.com/Sherlock-L/p/14932870.html 关键词:OmniDB.Mysql Router 背景:项目的测试数据库放在了生产机 ...

  9. 使用Promethues和Grafana监控Flink

    之前使用Influxdb储存Metrics经常会出现数据写不进去的问题,当Influxdb重启之后又能写进去,遂将数据存储部分换成Promethues,因为Flink采用PutGateway的方式,需 ...

  10. 才子佳人小说研究.PDF

    书本详情 才子佳人小说研究作者:周建渝著出版社:文史哲出版社时间:1998页数:273ISBN:957549167X ISBN:9789575491673