C#:⽅法参数之--输出参数(out)输出参数:⽅法声明时,使⽤out修饰符声明的形参,称为输出参数;
类似于引⽤参数(ref),输出参数也不创建新的存储位置(副本)
输出参数表⽰的存储位置就是实参所表⽰的储存位置
传递给输出参数的实参,在⽅法调⽤前不需要强制初始化,在⽅法内使⽤到该形参时,需要强制赋值⼀次。下⾯展⽰double类型的tryParse()⽅法它就是⼀个含有输出参数的⽅法
Console.WriteLine("请输⼊:");
var inputStr = Console.ReadLine();
double targetValue;
var parser_result = double.TryParse(inputStr,out targetValue);
if (parser_result)
{
Console.WriteLine(targetValue);
}
else
{
Console.WriteLine("转换失败--{0}",targetValue);
}
⾃⼰定义⼀个类似TryParse()的⽅法
定义ParseToDouble(object inputStr, out double parseResult)⽅法
static bool ParseToDouble(object inputStr, out double parseResult)
{
parseResult = 0;
try
{
parseResult = Convert.ToDouble(inputStr);
return true;
}
catch
{
return false;
}
}
在Main⽅法中调⽤该⽅法
var inputStr = Console.ReadLine();
double targetValue;
Console.WriteLine("请再次输⼊:");
inputStr = Console.ReadLine();
var parseResult = ParseToDouble(inputStr, out targetValue);
if (parseResult)
{
Console.WriteLine(targetValue);
}
else
{
Console.WriteLine("转换失败--{0}",targetValue);
}
以上展⽰了输出参数为值类型时,⽅法是如何定义以及如何调⽤的
输出参数为引⽤类型时的⽰例
class Student
{
public int Age { get; set; }
public string StuName { get; set; }
static bool CanCreateStudent(int age, string name, out Student stu)
{
stu = null;
if (age < 7 || age > 80)
{
return false;
}
if (string.IsNullOrWhiteSpace(name))
{
return false;
}
stu = new Student() { Age = age, StuName = name };
return true;
}
}
在Mian⽅法中调⽤
//待创建的stu对象
Student student;
var can_create = Student.CanCreateStudent(1,"",out student);
if (can_create)
{
Console.WriteLine(student.Age+"--"+student.StuName);
}
else
{
Console.WriteLine("不满⾜创建Student对象的条件");//输出:不满⾜创建Student对象的条件
}
Student student1;
var can_create_1 = Student.CanCreateStudent(12, "bigboss", out student1);writeline方法的作用
if (can_create_1)
{
Console.WriteLine(student1.Age + "--" + student1.StuName);//输出:12--bigboss
}
else
{
Console.WriteLine("不满⾜创建Student对象的条件");
}
以上便是对 out参数的总结,相较ref参数⽽⾔,out参数使⽤场景更多。它给予我们的⽅法"拥有多个返回值的能⼒";记录下来out参数的知识点,以便以后查阅

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。