c#基础学习(0724)之可变参数、ref和out
2021-03-27 11:24
标签:min === lse xxx region int uid 执行 需要 params可变参数,无论有几个参数,必须出现在参数列表的最后,可以为可变参数直接传递一个对应类型的数组 static void Main(string[] args) //Console.WriteLine("Hello World!"); ref参数使用方法 out参数使用方法 out多个参数使用场景 ref交换两个变量位置 out用户登录练习 c#基础学习(0724)之可变参数、ref和out 标签:min === lse xxx region int uid 执行 需要 原文地址:https://www.cnblogs.com/chao202426/p/9358713.html#region 可变参数
//1.如果方法有多个参数,可变参数可以作为最后一个参数
//2.可变参数可以传递参数也可以不传递参数,如果不传递参数,则args数组为一个长度为0的数组
//3.可变参数可以直接传递一个数组进来
static void Test(string msg,params int[] args)
{
//如果可变参数传值为null时,需要加上判断
if(args!=null)
{
}
}
#endregion
{
//Test("aa", 10, 1, 2, 32, 4, 5, 6);
//int[] arrInt = new int[] { 1, 2, 3, 4, 5 };
//Test("xxx");
//Test("aaaa", arrInt);
//Test("aaaa", null);
//Console.ReadKey();
//Console.WriteLine(""); ;
//List
//Console.WriteLine("===={0}====",list);
//Console.ReadKey();}
//ref仅仅时一个地址,引用传递,可以把值传递强制改为引用传递
//ref:参数在传递之前必须赋值,在方法中可以不为ref参数赋值,可以直接使用
//ref:应用场景内部对外部的值进行改变,out则是内部为外部变量赋值,out一般用在函数有多个返回值的场所
#region ref参数
static void JianJin(ref int m)
{
m=m+300;
}
static void KouKuan(ref int m)
{
m=m-300;
}
#endregion
//使用
static void Main(string[] args)
{
int money=1000;
JianJin(ref money);
KouKuan(ref money);
Console.WriteLine(money);
Console.ReadKey();
}
#region out参数
static void Test1(out int x)
{
//out参数在使用之前必须在方法里面为out参数赋值
//out参数无法获取传递进来的变量中的值,只能为传递进来的变量赋值
//out参数在方法执行完毕之前,必须赋值。
//Console.WriteLine(x);//报错:使用了未赋值的out参数"x"
x=100;
x++;
}
#endregion
//out使用
static void Main(string[] args)
{
int m=1000;//out方法可以不传值,传了也没用,因为方法里面必须为out参数赋值
Test1(out m);
Console.WriteLine(m);
}
//方法
static int GetAge(out string name,out int height)
{
name="超哥";
height=180;
return 1000;
}
//使用场景,使用ref也可以返回多个值
static void Main(string[] args)
{
//两个参数可以内联声明
string n;
int h;
int age=GetAge(out n,out h);
Console.WreteLine(age);
Console.WriteLine(n);
Console.WreteLine(h);
Console.ReadKey();
#region out使用场景2
string s="abc";
int result;
//将数字的字符串表示形式转换为他的等效32为有符号整数。一个指示转换是否成功的返回值
bool b=int.TryParse(s,out result);
if(b)
{
Console.WriteLine("转换成功,结果为:{0}",result);
}
else
{
Console.WriteLine("转换失败,结果为:{0}",s)
}
#endregion
}
#region 交换两个变量
static void Swap(ref int n1,ref int n2)
{
int tmp=n1;
n1=n2;
n2=tmp;
}
#endregion
static void Main(string[] args)
{
int m=10,x=20;
Swap(ref m, ref x);
Console.WriteLine(m);
Console.WriteLine(x);
Console.ReadKey();
}
private static bool ValidUserLogin(string uid, string pwd, out string msg)
{
bool isOk=false;
if(uid!="admin")
{
msg="用户名错误";
}
else if(pwd!="888888")
{
msg="密码错误";
}
else
{
isOk=true;
msg="欢迎用户:"+usd;
}
return isOk;
}
//使用
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
}
文章标题:c#基础学习(0724)之可变参数、ref和out
文章链接:http://soscw.com/index.php/essay/68547.html