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);
if (can_create_1)
{
    Console.WriteLine(student1.Age + "--" + student1.StuName);//輸出:12--bigboss
}
else
{
    Console.WriteLine("不滿足創建Student對象的條件");
}

以上便是對 out參數的總結,相較ref參數而言,out參數使用場景更多。它給予我們的方法"擁有多個返回值的能力";記錄下來out參數的知識點,以便以后查閱


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM