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关键字的简单使用的更多相关文章

  1. c#基础学习(0724)之可变参数、ref和out

    params可变参数,无论有几个参数,必须出现在参数列表的最后,可以为可变参数直接传递一个对应类型的数组 #region 可变参数 //1.如果方法有多个参数,可变参数可以作为最后一个参数 //2.可 ...

  2. [Python学习笔记-004] 可变参数*args和**kwargs

    在Python中,可变参数的传递使用*args和**kwargs来实现,其中: *args表示任意个位置参数(positional argument),被表示为一个只读的数组(tuple): **kw ...

  3. java基础基础总结----- 构造方法,可变参数列表

    package com.mon11.day2; /** * 类说明 :构造方法,可变参数列表 * @author 作者 : chenyanlong * @version 创建时间:2017年11月2日 ...

  4. java基础篇1之可变参数,增强for循环,自动装箱

    1.java中可变参数应用 例如 add(int x,int... args) 1)只能放在参数列表的最后面 2)...位于变量类型和变量名之间,前后有无空格都可以 3)调用可变参数的方法时,编译器为 ...

  5. java基础(20):Map、可变参数、Collections

    1. Map接口 1.1 Map接口概述 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. Collection中的集合,元素是孤 ...

  6. C基础知识(12):可变参数

    该功能需要使用<stdarg.h>.函数的最后一个参数写成省略号,即三个点号(...),省略号之前的那个参数是int,代表了要传递的可变参数的总数.该文件提供了实现可变参数功能的函数和宏. ...

  7. python--基础学习(五)参数位置传递、关键字传递、包裹传递及解包裹

    python系列均基于python3.4环境 1.位置传递和关键字传递 代码示例 #位置传递 def fun(a,b,c): print("a: {0}, b: {1}, c: {2}&qu ...

  8. c#基础学习(0806)之StringBuilder的使用

    以前字符串的拼接基本都是用string来完成的,从来没有考虑过性能或者速度的问题,自从学习了StringBuilder之后才发现两者的差距有多大,当然,数据量比较小的时候,用string还是挺方便的, ...

  9. c++基础学习之函数与参数

    1.传值参数 //传值参数 int Abc(int a,int b,int c) { ; } a,b和c是函数Abc 的形式参数formal parameter,类型均为整型.如果在如下语句中调用函数 ...

随机推荐

  1. AOP编程的学习总结

    前几天听到一个同事说起AOP 然后就想学习下应用到项目中去,自己也是在网上找了很多的资料,之后发现 网上的大部分资料的内容几乎都是如出一撤,于是自己就整理了一下再加上这几天的学习总结到的知识写到这篇文 ...

  2. 解决:百度编辑器UEditor,怎么将图片保存到图片服务器,或者上传到ftp服务器的问题(如果你正在用UE,这篇文章值得你看下)

    在使用百度编辑器ueditor的时候,怎么将图片保存到另一个服务器,或者上传到ftp服务器?这个问题,估计很多使用UE的人会遇到.而且我百度过,没有找到这个问题的解决方案.那么:本篇文章就很适合你了. ...

  3. ASP.NET Core学习总结(1)

    经过那么长时间的学习,终于想给自己这段时间的学习工作做个总结了.记得刚开始学习的时候,什么资料都没有,光就啃文档.不过,值得庆幸的是,自己总算还有一些Web开发的基础.至少ASP.NET的WebFor ...

  4. js事件处理

    1.js中常用的事件处理程序(event Handler) onabort 用户终止了页面的加载 onblur 用户离开了对象 onchange 用户修改了对象 onclick 用户点击了对象 one ...

  5. 【大数据之数据仓库】kudu性能测试报告分析

    本文由  网易云发布. 这篇博文主要的内容不是分析说明kudu的性能指标情况,而是分析为什么kudu的scan性能会这么龊!当初对外宣传可是加了各种 逆天黑科技的呀:列独立存储.bloom filte ...

  6. 编码CODING

    摘自(复制)于海燕博客: http://www.cnblogs.com/haiyan123/p/7230533.html 1.内存和硬盘都是用来存储的. CPU:速度快 硬盘:永久保存 2.文本编辑器 ...

  7. 图片后门恶意捆绑工具FackImageexploer

    本文作者:夜莺 今天向大家提个醒,最近有一款工具名叫FackImageexploer,该工具能够将恶意的.bat和.exe程序与图片绑定在一起,假若受害者点击了图片,就会反弹个shell给不法分子,如 ...

  8. 基于SWOOLE的分布式SOCKET消息服务器架构

    消息服务器使用socket,为避免服务器过载,单台只允许500个socket连接,当一台不够的时候,扩充消息服务器是必然,问题来了,如何让链接在不同消息服务器上的用户可以实现消息发送呢? 要实现消息互 ...

  9. java 中什么是aop

    AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入 ...

  10. snmpv3-snmpd.conf解析

    1.先指定createUser语句,设置密码和传输密钥. createUser user1 createUser user2 MD5 user2password createUser user3 MD ...