新手C#参数类型ref、out、params的学习2018.08.04

ref用于传递参数时,将实参传递到函数中,是引用参数,在使用前必须被赋值。string类型也同样适用。
static void Main(string[] args)
{
string a1,a2;
int i = 10, j = 20;
swap(ref i, ref j);
Console.WriteLine("i={0},j={1}",i, j);
Console.ReadKey();
}
static void swap(ref int i,ref int j)//ref用于调用原本变量,而非函数中不影响变量的情况
{
int temp;
temp=i;
i = j;
j = temp;
}
out为输出参数,可以用于使函数返回不止一类返回值,且out参数不需要赋初值,out可以用于判断函数执行是否符合要求。
//用于将汉字的数字转换为阿拉伯数字
static void Main(string[] args)
{
int num;
bool b;
string s;
s = Console.ReadLine();
num=Parse(s,out b);
if (b == true)//通过b的值判断输入的是否为有效汉字
{
Console.WriteLine("success \n{0}",num);
}
else
{
Console.WriteLine("false");
}
Console.ReadKey();
}
static int Parse(string s,out bool success)
{
if(s=="一")//设定两个有效汉字
{
success = true;
return 1;
}
else if(s=="二")
{
success = true;
return 2;
}
else
{
success = false;
return -1;
}
}
可变参数即采用数组形式传递参数,在数据类型前加params表示可变参数,例如static int Max(params int[] values),作用在于调用Max函数时不需要先定义一个数组,可以直接输入数据,Console.WriteLine("{0}", Max(3, 5, 4, 7, 8, 9))。注:可变参数数组必须是最后一个。
static void Main(string[] args)
{
Console.WriteLine("{0}", Max(, , , , , ));
SayHello("big");
Console.ReadKey();
}
static int Max(params int[] values)//可变参数params,以数组形式传递
{
int max = ;
foreach(int value in values)
{
if (value > max)
max = value;
}
return max;
}
参数默认值即在定义函数时参数给定一个默认值,当使用时未给参数指定值时采用默认值。
static void Main(string[] args)
{
SayHello("big");
Console.ReadKey();
} static void SayHello(string name,int age=)
{
Console.WriteLine("我是{0},我今年{1}", name, age);
}
其输出结果则是我是big,我今年20,若指定age则会输出指定的age的大小,用重载实现参数默认值的效果在构造函数中用的较多。
2018.08.04
新手C#参数类型ref、out、params的学习2018.08.04的更多相关文章
- 新手C#int.Parse、int.TryParse的学习2018.08.04
int.Parse()用于将字符串转换为32为int类型,但是在遇到非数字或者类似1.545这种小数的时候会报错,后来采用了int.TryParse,这个在转换后会判断是否可以正常转换,若不能,会返回 ...
- 新手C#重载、重写的学习2018.08.04
重载:在同一类(class)中,使用相同的方法名称,不同的参数和(不一定)不同的返回值类型构造成的方法. 举例: class OverLoadTest { public void Hello() { ...
- 新手C#构造函数、继承、组合的学习2018.08.06/07
构造函数,是一种特殊的方法.主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.特别的一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同 ...
- 新手C#string类常用函数的学习2018.08.04
ToLower()用于将字符串变为小写,注意字符串的不可变特性,需要重新赋值给另一个字符串变量. s = s.ToLower();//字符串具有不可变性,转换后需要重新赋值,不可仅有s.ToLower ...
- (转)新手C#SQL语句的学习2018.08.13
1.创建数据库(create) CREATE DATABASE database-name 2.删除数据库(drop) drop database dbname 3.备份数据库 --- 创建 备份数据 ...
- 新手C#SQLServer在程序里实现语句的学习2018.08.12
从C#中连接到SQL Server数据库,再通过C#编程实现SQL数据库的增删改查. ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据 ...
- 新手C#s.Split(),s.Substring(,)以及读取txt文件中的字符串的学习2018.08.05
s.split()用于字符串分割,具有多种重载方法,可以通过指定字符或字符串分割原字符串成为字符串数组. //s.Split()用于分割字符串为字符串数组,StringSplitOptions.Rem ...
- 新手C#异常的学习2018.08.07
异常是在程序执行期间出现的问题.C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零. class Program { static void Main(string[] args) ...
- 新手C#面向对象的学习2018.08.06
class Person//声明一个Person类 { //类中的声明与Main中不同,类中声明的是字段而不是函数. public string gender; public string name= ...
随机推荐
- MySQL根据表字段生成C#Model语句
USE INFORMATION_SCHEMA;SELECT CONCAT('/// <summary>\r\n/// ',COLUMN_COMMENT,'\r\n/// </summ ...
- Java——三大特性
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- L175 Endorestiform Nucleus: Scientist Just Discovered a New Part of the Human Brain
The newly named Endorestiform Nucleus sits in the inferior cerebellar小脑 peduncle, at the junction be ...
- 深入__proto__和prototype的区别和联系
前话 有一个一个装逼的同事,写了一段代码 function a(){} a.__proto__.__proto__.__proto__ 然后问我,下面这个玩意a.__proto__.__proto__ ...
- Nodejs中npm install 命令的问题
在使用nodejs的npm包管理工具中碰到过许多个坑,在网上查了很久才解决,现在加以总结. 两种安装方式(本地安装,全局安装) 1.全局安装(npm install -g moduleName/npm ...
- LG3389 【模板】高斯消元法
题意 题目描述 给定一个线性方程组,对其求解 输入输出格式 输入格式: 第一行,一个正整数\(n\) 第二至\(n+1\)行,每行\(n+1\)个整数,为\(a_1, a_2 \cdots a_n\) ...
- jquery类的创建方式及关键字new的原理
一.由jQuery创建类引发的问题 在用jQuery选择器时候,可以通过下面两种方式获取元素,并得到一个jQuery对象. var d1 = jQuery('#demo01'); var d2 = n ...
- mysql_use_result的使用
对于每个可以产生一个结果集的命令(比如select.show.describe, explain, check_table等等),发起mysql_query或者mysql_real_query之后,你 ...
- 你正在从一个声称代表如下的证书颁发机构安装证书 alipay truest network,希望能知道程序是怎么实现的或相关资料
你正在从一个声称代表如下的证书颁发机构安装证书 alipay truest network,希望能知道程序是怎么实现的或相关资料
- 黑马Python——学习之前
学习清单 学习态度