日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#传递参数

發布時間:2025/4/14 C# 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#传递参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

與函數交換數據的最好方式就是傳遞參數,在C#中有四種方法來控制參數如何傳遞給目標方法

C#中的參數修飾符

無修飾如果一個參數沒有用參數修飾符,則認為它將按值傳遞
out輸出參數由被調用的方法賦值。因此它按引用傳遞
ref調用者賦初值,并且可以由被調用的方法可選地重新賦值,因此數據也是按照引用傳遞的
params將一組可變數據的參數作為單獨的邏輯參數進行傳遞

下面來一一介紹

默認傳參

static int Multiply(int a, int b){int ans = a * b;a = 100;b = 315;return ans;}

在主函數中進行調用

static void Main(string[] args){Console.WriteLine("**********默認傳參行為********\n");int a = 19, b = 25; Console.WriteLine("調用之前的:a={0},b={1}", a, b);Console.WriteLine("調用函數的結果:{0}", Multiply(a, b)); Console.WriteLine("調用之后的: a={0},b={1}", a, b);Console.WriteLine();Console.ReadKey();}
輸出結果:

通過輸出結果可知:a和b的值,在調用函數Multiply(int a, int b) 前后的值保持不變,雖然在Multiply(int a, int b)函數內部試圖修改a和b的值,但實際上修改的只是a,b值的副本;a,b原來的值不變

輸出參數out

out修飾,即定義為輸出參數,當定義為輸出參數時,必須在退出方法之前給參數一個恰當的值,否則會產生編譯錯誤

以下是帶out參數的方法

static void FunWithOut(int x,int y,out int ans){ans = x + y;}

調用一個帶有輸出參數的方法,也必須是用out修飾符。需要注意的是:作為輸出變量的本地變量不需要賦值,否則原來的值會丟失

FunWithOut(110, 120, out ans);Console.WriteLine("110+120={0}", ans);Console.ReadKey();

我們知道使用return 一次只能返回一個返回值,而使用out參數則可以通過一次調用,獲取多個返回值


例如:

static void ReturnValues(out int a,out int b,out string c,out bool d){a = 120;b = 119;c = "This is a demo";d = false;}Console.WriteLine("**********帶有out參數,輸出多個值********\n");int a; int b; string c; bool d;ReturnValues(out a, out b, out c, out d);Console.WriteLine("輸出結果:\n a={0}\n b={1}\n c={2}\n d={3}\n",a,b,c,d);Console.ReadKey();

引用參數ref

引用參數,可以對調用者作用域中聲明的不同數據進行操作。比如可以用引用參數來實現排序和交換等操作

下面是交換兩個值的實例:

public static void SwapValues(ref int a,ref int b){int temp = a;a = b;b = temp;} 調用函數 static void Main(string[] args){Console.WriteLine("**********帶有ref參數********\n");int a = 123;int b = 456;Console.WriteLine("調用之前的:a={0} b={1}", a, b);SwapValues(ref a, ref b);Console.WriteLine("調用之后的:a={0} b={1}", a, b);Console.ReadKey();}

參數數組params

使用params修飾符可以把相同類型可變數量的參數作為一個邏輯參數傳遞給方法,比如下面的函數,可以接收任意個int類型的數,并且返回它的平均值

static int ReturnAverage(params int[] values){Console.WriteLine("參數數組的長度{0}", values.Length);int sum = 0;if(values.Length==0){return sum;}for(int i=0;i<values.Length;i++){sum += values[i];}return (sum / values.Length);} static void Main(string[] args){Console.WriteLine("**********帶params的參數數組********\n");int average;Console.WriteLine("**********用列表調用********\n");average = ReturnAverage(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);Console.WriteLine("傳入參數的平均值為{0}", average);Console.WriteLine("**********用數組調用********\n");int[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };Console.WriteLine("傳入參數的平均值為{0}", ReturnAverage(data));Console.ReadKey();}C#語言中,要求方法只能有一個params參數修飾符

可選參數

可選參數允許我們對傳入的參數提供默認值,可選參數必須放在參數列表的最后 class Program{static void EnterLogData(string message,string owner="Programer"){Console.Beep();Console.WriteLine("Error:{0}", message);Console.WriteLine("Owner of Error:{0}", owner);}static void Main(string[] args){//調用含可選參數的函數EnterLogData("Oh no ! Grid can't find data ");EnterLogData("Oh no ! I can't find the payroll data", "CFO");Console.ReadKey();}}
在上面的兩次調用中: 第一次調用中,沒有顯式指定第二個string的值,第二個參數采用默認值即"Programer" 第二次調用中,顯式指定了owner的值為"CFO"

需要注意的是可選參數的值必須在編譯時就確定好,而不能再運行時,才確定

命名參數



轉載于:https://www.cnblogs.com/tao-zi/p/3832580.html

總結

以上是生活随笔為你收集整理的C#传递参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。