c#基础学习(0806)之可变参数、ref和out关键字的简单使用
params可变参数:
1、无论方法有几个参数,可变参数必须出现再参数列表的最后,可以为可变参数直接传递一个对应类型的数组;
2、可变参数可以传递参数也可以不传递参数,如果不传递参数,则数组为一个长度为0的数组
3、可变参数可以直接传递一个数组进来
static void Test(string msg,params int[] args)
{
//如果可变参数传值为null时,需要加上判断
if (args != null)
{ }
}
ref关键字:
1、参数再传递之前必须赋值,再方法钟可以不为ref参数赋值,可以直接使用
2、应用场景内部对外部的值直接改变
3、reg仅仅是一个地址,引用传递,可以把值传递强制改为引用传递
static void Main(string[] args)
{
#region 交换两个变量
int m=,x=;
Swap(ref m, ref x);
Console.WriteLine(m);
Console.WriteLine(x);
Console.ReadKey();
#endregion
} static void Swap(ref int n1, ref int n2)
{
int tmp=n1;
n1=n2;
n2=tmp;
}
out关键字:
1、在方法中必须为out参数赋值
2、out参数的变量再传递之前不需要赋值,即使赋值了也不能在方法中使用,因为out参数无法获取传递进来的变量中的值,只能为传递进来的变量赋值,并且在方法执行完毕之前,必须赋值
static void Main(string[] args)
{
#region 用户登录练习
while (true)
{
Console.WriteLine("请输入用户名:");
string uid = Console.ReadLine();
Console.WriteLine("请输入密码:");
string pwd = Console.ReadLine();
string msg;
bool isOk = ValidUserLogin(uid, pwd, out msg);
if (isOk)
{
Console.WriteLine("登录成功====={0}",msg);
}
else
{
Console.WriteLine("登录失败===={0}",msg);
}
}
#endregion
} private static bool ValidUserLogin(string uid, string pwd, out string msg)
{
bool isOk = false;
if (uid != "admin")
{
msg = "用户名错误";
}
else if (pwd != "")
{
msg = "密码错误";
}
else
{
isOk = true;
msg = "欢迎用户:" + uid;
}
return isOk;
}
c#基础学习(0806)之可变参数、ref和out关键字的简单使用的更多相关文章
- c#基础学习(0724)之可变参数、ref和out
params可变参数,无论有几个参数,必须出现在参数列表的最后,可以为可变参数直接传递一个对应类型的数组 #region 可变参数 //1.如果方法有多个参数,可变参数可以作为最后一个参数 //2.可 ...
- [Python学习笔记-004] 可变参数*args和**kwargs
在Python中,可变参数的传递使用*args和**kwargs来实现,其中: *args表示任意个位置参数(positional argument),被表示为一个只读的数组(tuple): **kw ...
- java基础基础总结----- 构造方法,可变参数列表
package com.mon11.day2; /** * 类说明 :构造方法,可变参数列表 * @author 作者 : chenyanlong * @version 创建时间:2017年11月2日 ...
- java基础篇1之可变参数,增强for循环,自动装箱
1.java中可变参数应用 例如 add(int x,int... args) 1)只能放在参数列表的最后面 2)...位于变量类型和变量名之间,前后有无空格都可以 3)调用可变参数的方法时,编译器为 ...
- java基础(20):Map、可变参数、Collections
1. Map接口 1.1 Map接口概述 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. Collection中的集合,元素是孤 ...
- C基础知识(12):可变参数
该功能需要使用<stdarg.h>.函数的最后一个参数写成省略号,即三个点号(...),省略号之前的那个参数是int,代表了要传递的可变参数的总数.该文件提供了实现可变参数功能的函数和宏. ...
- python--基础学习(五)参数位置传递、关键字传递、包裹传递及解包裹
python系列均基于python3.4环境 1.位置传递和关键字传递 代码示例 #位置传递 def fun(a,b,c): print("a: {0}, b: {1}, c: {2}&qu ...
- c#基础学习(0806)之StringBuilder的使用
以前字符串的拼接基本都是用string来完成的,从来没有考虑过性能或者速度的问题,自从学习了StringBuilder之后才发现两者的差距有多大,当然,数据量比较小的时候,用string还是挺方便的, ...
- c++基础学习之函数与参数
1.传值参数 //传值参数 int Abc(int a,int b,int c) { ; } a,b和c是函数Abc 的形式参数formal parameter,类型均为整型.如果在如下语句中调用函数 ...
随机推荐
- K8S+GitLab-自动化分布式部署ASP.NET Core(三) 更新镜像版本并部署到K8S上
一.介绍 前一篇,介绍了ASP.NET Core部署到K8S上,下面介绍我们在发布新一版本中怎么通过Gitlab CI自动给镜像打版本并部署到K8S上. 二.我们通过GitLab CI/CD 变量 不 ...
- 爬虫Scrapy指令学习
1.新建一个新的爬虫项目指令 scrapy startproject xxx 2.在项目/spider目录下创建一个名为XXX的爬虫,并指定爬取域的范围 scrapy genspider XXX & ...
- The service definition selected is invalid
吐槽下 最近在学Java 听闻Java生态很好 社区很多 但实际操作起来确实另一番风景 不多说了 说正事 添加WebService服务Client时有密码认证得服务 Eclipse抛出 The ser ...
- BootStrap 4正式版发布(原文翻译)
原文链接:http://blog.getbootstrap.com/2018/01/18/bootstrap-4/ 关于Bootstrap 什么是Bootstrap Bootstrap,来自 Twit ...
- 统计进程打开了多少文件,定位too many open files
[root@ostack1 ~]# lsof -p 18628 | wc -l 114
- 程序媛计划——mysql修改表结构
#查看表的结构 mysql> desc score; +------------+--------------+------+-----+---------+----------------+ ...
- mysql 数据备份 crontab
每天凌晨 2 点备份数据 crontab -e 0 2 * * * mysqldump ${mysqldir}/bin/mysqldump -h$host -P$port -uadmin -p&qu ...
- win7下oracle的安装
1.参考地址1:http://www.cnblogs.com/libiao/archive/2008/08/24/1275000.html 2.参考地址2:http://www.server110.c ...
- jmeter测试计划配置
用户定义的变量: 测试计划上可以添加用户定义的变量.一般添加一些系统常用的配置.如果测试过程中想切换环境,切换配置,一般不建议在测试计划上添加变量,因为不方便启用和禁用,一般是直接添加用户自定义变量组 ...
- day 56 linux的安装python3 ,虚拟环境,mysql ,redis
1.1下载python源码包 网址:https://www.python.org/downloads/release/python-366/ 下载地址:https://www.python.org/f ...