輸出參數:方法聲明時,使用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);
if (can_create_1)
{
Console.WriteLine(student1.Age + "--" + student1.StuName);//輸出:12--bigboss
}
else
{
Console.WriteLine("不滿足創建Student對象的條件");
}
以上便是對 out參數的總結,相較ref參數而言,out參數使用場景更多。它給予我們的方法"擁有多個返回值的能力";記錄下來out參數的知識點,以便以后查閱