最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于params,ref,out的參數(shù)問題詳解

 更新時(shí)間:2013年06月05日 16:25:32   作者:  
本篇文章是對params,ref,out的參數(shù)問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

最近在寫程序時(shí)遇到params,ref,out 參數(shù)問題?;仡^有自習(xí)看了看MSDN,才鞏固了基礎(chǔ)?,F(xiàn)在和大家分享一下。
params
params 關(guān)鍵字在方法成員的參數(shù)列表中使用,為該方法提供了參數(shù)個(gè)數(shù)可變的能力,它在只能出現(xiàn)一次并且不能在其后再有參數(shù)定義(之前可以)。
示例:

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class App
{
//第一個(gè)參數(shù)必須是整型,但后面的參數(shù)個(gè)數(shù)是可變的。
//而且由于定的是object數(shù)組,所有的數(shù)據(jù)類型都可以做為參數(shù)傳入
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()
{
//可變參數(shù)部分傳入了三個(gè)參數(shù),都是字符串類型
UseParams(1, "a", "b", "c");
//可變參數(shù)部分傳入了四個(gè)參數(shù),分別為字符串、整數(shù)、浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)數(shù)組
UseParams(2, "d", 100, 33.33, new double[] {1.1, 2.2});
Console.ReadLine();
}
}
}

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

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

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

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

相關(guān)文章

最新評論

合川市| 西平县| 瑞金市| 福泉市| 佳木斯市| 元朗区| 漳平市| 无极县| 邯郸县| 玉溪市| 五常市| 民丰县| 大关县| 体育| 桑植县| 莆田市| 石泉县| 伊吾县| 公安县| 拉孜县| 牡丹江市| 慈利县| 呼图壁县| 新宁县| 囊谦县| 灌云县| 漳平市| 临泉县| 如皋市| 正镶白旗| 平原县| 兴国县| 金湖县| 孟连| 徐州市| 五常市| 商都县| 高碑店市| 文山县| 上思县| 兰西县|