1. 程式人生 > >C#中out,ref,Parse的的引數以及使用方法

C#中out,ref,Parse的的引數以及使用方法

out的使用方法

1.如果方法的引數用out修飾了。那麼這個引數必須在方法裡進行賦值。

2.out修飾方法的引數了,那麼在方法外面,可以被給這個引數賦值,但在方法裡面必須給這個out修飾符的引數賦值

3.另外,引數加out,是把這個方法中的引數的值傳到方法外面了。

如以下例項

 static void Main(string[] args)

        {

            int num1 ;

            int num2 = 80;



            int numSum = Show(out num1,num2);

            Console.WriteLine(num1);

            Console.WriteLine(num2 );

            Console.ReadKey();

        }

        public static int Show(out int number1,int number2)

        {

             number1 =90;



             return number1+ 10;

        }

out傳多個返回值的方法

static void Main(string[] args)

        {

            int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

            int max ;

            int min;

            int sum =ArraySum(nums,out max, out min);

        }

            public static int ArraySum(int []numbers,out int max,out int min)

        {

            max = int.MaxValue;

            min = int.MinValue;

            int sum = 0;

            for (int i = 0; i < numbers.Length; i++)

            {

                if (numbers[i] > max)

                {

                    max = numbers[i];

                }

                if (numbers[i] < min)

                {

                    min = numbers[i];               

             }

                sum += numbers[i];        

          }

            return sum;

        }

方法的out引數和ref引數

ref用的時候必須給要給這個變數賦值,和out有區別,out可以把方法裡的值傳出去,

ref可以把值傳到方法裡,有可以把值傳到方法外

ref是有進有出,而out是隻出不進。

out與ref區別:

同:

1、都能返回多個返回值。

2、若要使用 ref 和out引數,則方法定義和呼叫方法都必須顯式使用 ref和out 關鍵字。在方法中對引數的設定和改變將會直接影響函式呼叫之處(引數的初始值)。

 

異:

1.ref指定的引數在函式呼叫時候必須初始化,不能為空的引用。而out指定的引數在函式呼叫時候可以不初始化;out指定的引數

2.在進入函式時會清空自己,必須在函式內部賦初值。而ref指定的引數不需要。

ref和out的功能

1、使用ref型引數時,傳入的引數必須先被初始化,對out而言,必須在方法中對其完成初始化。

2、使用ref和out時,在方法的引數和執行方法時,都要加Ref或Out關鍵字,以滿足匹配。

3、out適合用在需要retrun多個返回值的地方,而ref則用在需要被呼叫的方法修改呼叫者的引用的時候。

4、ref傳進去的引數在函式內部可以直接使用,而out不可。

5、系統對ref的限制是更少一些的。

6、若要使用 ref 引數,必須將引數作為 ref 引數顯式傳遞到方法,ref 引數的值被傳遞到 ref 引數。

7、當希望方法返回多個值時,宣告 out 方法非常有用;使用 out 引數的方法仍然可以返回一個值。

 

擴充套件資料:

out:標識一個引數值會受影響的引數,但在傳入方法時,該引數無需先初始化。

ref:標識一個引數值可能會受影響的引數。

int.Parse(string型別變數名)

 

       該方式是將數字內容的字串轉為int型別,如果字串內容為空或者null時,則丟擲ArgumentNullException異常;如果字串內容不是數字,則丟擲FormatException異常;如果字串內容所表示數字超出int型別可表示的範圍,則丟擲OverflowException異常。

      使用該方法切忌的一點就是隻能處理字串內容,而且字串內容只能在int型別可表示的範圍之內。

 int.TryParse(string s, out int result)

該方式也是將數字內容的字串轉為int型別,但是該方式比int.Parse優越的地方,就是它不會出現異常。如果轉換成功返回 true,如果轉換失敗返回 false。很明顯,最後一個引數為輸出值,如果轉換失敗,輸出值為 0;如果轉換成功,則輸出相應的值。

TryParse方法例項

static void Main(string[] args)
        {
            Console.WriteLine("請輸入一個數字");
            string strNumber = Console.ReadLine();
            int num;
            bool result = Program.MyTryParse(strNumber,out num);
            bool result1 = int.TryParse(strNumber, out num);
        }
            public static bool MyTryParse(string s,out int result)
        {
            result = 0;
            try
            {
                result = Convert.ToInt32(s);
                return true;

            }
            catch
            {
                return false;
            }