a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

基于params,ref,out的參數問題詳解

2020-01-24 03:14:31
字體:
來源:轉載
供稿:網友

最近在寫程序時遇到params,ref,out 參數問題。回頭有自習看了看MSDN,才鞏固了基礎。現在和大家分享一下。
params
params 關鍵字在方法成員的參數列表中使用,為該方法提供了參數個數可變的能力,它在只能出現一次并且不能在其后再有參數定義(之前可以)。
示例:

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class App
{
//第一個參數必須是整型,但后面的參數個數是可變的。
//而且由于定的是object數組,所有的數據類型都可以做為參數傳入
public static void UseParams(int id, params object[] list)
{
Console.WriteLine(id);
for (int i = 0; i < list.Length; i++)
{
Console.WriteLine(list[i]);
}
}
static void Main()
{
//可變參數部分傳入了三個參數,都是字符串類型
UseParams(1, "a", "b", "c");
//可變參數部分傳入了四個參數,分別為字符串、整數、浮點數和雙精度浮點數數組
UseParams(2, "d", 100, 33.33, new double[] {1.1, 2.2});
Console.ReadLine();
}
}
}

ref
ref 關鍵字使參數按引用傳遞。其效果是,當控制權傳遞回調用方法時,在方法中對參數所做的任何更改都將反映在該變量中。
1.若要使用 ref 參數,則方法定義和調用方法都必須顯式使用 ref 關鍵字。
2.傳遞到 ref 參數的參數必須最先初始化。這與 out 不同,out 的參數在傳遞之前不需要顯式初始化。
3.屬性不是變量,因此不能作為 ref 參數傳遞。
4.盡管 ref 和 out 在運行時的處理方式不同,但它們在編譯時的處理方式是相同的。因此,如果一個方法采用 ref 參數,而另一個方法采用 out 參數,則無法重載這兩個方法。例如,從編譯的角度來看,以下代碼中的兩個方法是完全相同的。如果嘗試這么做,將導致不能編譯該代碼。
5.如果一個方法采用 ref 或 out 參數,而另一個方法不采用這兩類參數,則可以進行重載。
示例:
按引用傳遞值類型是有用的,但是 ref 對于傳遞引用類型也是很有用的。這允許被調用的方法修改該引用所引用的對象,因為引用本身是按引用來傳遞的。
復制代碼 代碼如下:

using System;
class App
{
    public static void UseRef(ref int i)
    {
        i += 100;
        Console.WriteLine("i = {0}", i);
    }
    static void Main()
    {
        int i = 10;
        // 查看調用方法之前的值
        Console.WriteLine("Before the method calling: i = {0}", i);
        UseRef(ref i);
        // 查看調用方法之后的值
        Console.WriteLine("After the method calling: i = {0}", i);
        Console.Read();
     }
}

out
out 關鍵字會導致參數通過引用來傳遞。這與 ref 關鍵字類似。
與 ref 的不同之處:
1.ref 要求變量必須在傳遞之前進行初始化。
2.盡管作為 out 參數傳遞的變量不需要在傳遞之前進行初始化,但需要調用方法以便在方法返回之前賦值。
示例:
與 ref 示例不同的地方只要將 ref 改為 out,然后變量 i 僅需要聲明即可。
復制代碼 代碼如下:

static void Main()
{
    //int i = 10; 改為
    int i;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩成年人视频 | 欧洲亚洲成人 | 久久精品一 | 国产999精品久久久久久 | 精品国产一区二区在线 | 欧美亚洲一区二区三区 | 亚洲精品免费在线视频 | 国产成人一区二区三区影院在线 | 无码日韩精品一区二区免费 | 国产在线视频在线 | 亚洲日韩欧美一区二区在线 | 国产精品亚洲欧美日韩一区在线 | 日本xxww视频免费 | 在线91| 99精品欧美一区二区三区综合在线 | 久久一区二区三区四区五区 | 麻豆视频国产 | 中文字幕 亚洲一区 | 精品123区| 青娱乐网站 | 国产精品久久久久久久午夜片 | 黄视频网站免费观看 | 中文字幕日韩高清 | 国产精品欧美日韩 | 国产suv精品一区二区33 | 国产精品3区 | 81精品国产乱码久久久久久 | h片在线免费观看 | 国产成人精品亚洲777人妖 | 国产99久久精品一区二区永久免费 | 久久久久久久久久久久国产精品 | 亚洲88| 久久综合色视频 | 日韩视频中文字幕 | 在线精品观看 | 黄色国产精品 | 国产日韩精品视频 | 欧美三区 | 黄色国产精品 | 久久人人网 | 四虎网址|