星期四, 8月 01, 2019

[C#] 參數 - Out

Out 參數簡易筆記
namespace Out
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 宣告方式差異
            // C# 7.0 前
            int result1;
            OutMethod(10, out result1);

            // C# 7.0 開始
            OutMethod(10, out int result2);
            #endregion

            OutMethod(10, out int result3);
            Console.WriteLine(result3);

            OutMethod(out int result4, 20);
            Console.WriteLine(result4);

            int input = 11;
            Method_ReturnMultiResult(input, out int inputX2, out bool IsOdd);
            Console.WriteLine($"{input}-{inputX2}-{IsOdd}");

            var result6 = Method_ReturnMultiResult(22);
            Console.WriteLine($"{result6.input}-{result6.inputX2}-{result6.IsOdd}");
        }

        #region out 參數位置
        // MS 函數大多把 out 寫在後方
        private static void OutMethod(int i, out int result)
        {
            result = i * i;
        }

        // 同事偏好把 out 放在前方
        private static void OutMethod(out int result, int i)
        {
            result = i * i;
        }
        #endregion

        #region 回傳多值
        // 利用 Out 回傳多值
        private static void Method_ReturnMultiResult(int i, out int inputX2, out bool IsOdd)
        {
            inputX2 = i * 2;
            IsOdd = (i % 2 == 0 ? false : true);
        }

        // C# 7.0 開始有 ValueTuple 後,大多利用它來回傳多值
        private static (int input, int inputX2, bool IsOdd) Method_ReturnMultiResult(int i)
        {
            return (i, i * 2, i % 2 == 0 ? false : true);
        }
        #endregion
    }
}

沒有留言:

張貼留言