欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入C# 4.0 新特性dynamic、可選參數(shù)、命名參數(shù)的詳細(xì)介紹

 更新時(shí)間:2013年05月18日 11:11:10   作者:  
本篇文章是對(duì)C# 4.0 新特性dynamic、可選參數(shù)、命名參數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
1.dynamic ExpandoObject
熟悉js的朋友都知道js可以這么寫 :
復(fù)制代碼 代碼如下:

var t = new Object();
t.Abc = ‘something';
t.Value = 243;

現(xiàn)在這個(gè)js動(dòng)態(tài)語(yǔ)言的特性,我們也可以在c#中使用了,前提是將一個(gè)變量聲明為ExpandoObject類型。如下例:
復(fù)制代碼 代碼如下:

static void Main(string[] args)
{
dynamic t = new ExpandoObject();
t.Abc = "abc";
t.Value = 10000;
Console.WriteLine("t's abc = {0},t's value = {1}", t.Abc, t.Value);
Console.ReadLine();
}

C# 4.0中新增了一個(gè)命名空間System.Dynamic來(lái)實(shí)現(xiàn)對(duì)此應(yīng)用的支持,這種用法的意義何在,現(xiàn)在我還不太清楚,也是是c#向動(dòng)態(tài)語(yǔ)言過(guò)渡的一種試探吧。
2.泛型自動(dòng)轉(zhuǎn)換
在C#4.0之前下面的代碼是不可以編譯通過(guò)的
復(fù)制代碼 代碼如下:

IEnumerable<object> objs = new List<string> {
        "I'm 0","I'am 1","I'am 2"
    };

但是在c#4.0中這種聲明是允許的,不過(guò)也僅限于泛型接口,泛型類型的類似做法是不允許的,如下代碼是有編譯錯(cuò)誤的
復(fù)制代碼 代碼如下:

List<object> objList = new List<string> { 
        "I'am 0","I'am 1","I'am 2"
    };

3.方法參數(shù)之可選參數(shù)
如下方法聲明的語(yǔ)法
復(fù)制代碼 代碼如下:

static void DoSomething(int notOptionalArg,string arg1 = "default Arg1", string arg2 = "default arg2") {
    Console.WriteLine("arg1 = {0},arg2 = {1}",arg1,arg2);
}

這個(gè)方法有三個(gè)參數(shù)第一個(gè)是必選參數(shù),第二個(gè)和第三個(gè)是可選參數(shù),他們都有一個(gè)默認(rèn)值。這種形式對(duì)固定參數(shù)的幾個(gè)方法重載很有用。
如下調(diào)用:
復(fù)制代碼 代碼如下:

static void Main(string[] args)
{
    DoSomething(1);
    DoSomething(1, "葫蘆");
    DoSomething(1, "葫蘆", "黃瓜");
    Console.ReadLine(); 
}

也許你會(huì)想到,假如我有一個(gè)和可選參數(shù)方法不選某個(gè)參數(shù)相同的方法簽名的方法時(shí),c#會(huì)怎么處理呢,我們看下下面的代碼
復(fù)制代碼 代碼如下:

static void DoSomething(int notOpArg, string arg)
{
    Console.WriteLine("arg1 = {0}", arg);
}

我又重載了一個(gè)DoSomething這個(gè)方法有兩個(gè)參數(shù),但是沒(méi)有可選參數(shù),實(shí)驗(yàn)證明調(diào)用
DoSomething(1,”arg”)時(shí)會(huì)優(yōu)先執(zhí)行沒(méi)有可選參數(shù)的方法。
4.方法參數(shù)之命名參數(shù)
命名參數(shù)讓我們可以在調(diào)用方法時(shí)指定參數(shù)名字來(lái)給參數(shù)賦值,這種情況下可以忽略參數(shù)的順序。如下方法聲明:
復(fù)制代碼 代碼如下:

static void DoSomething(int height, int width, string openerName, string scroll) {
    Console.WriteLine("height = {0},width = {1},openerName = {2}, scroll = {3}",height,width,openerName,scroll);
}

我們可以這樣來(lái)調(diào)用上面聲明的方法
復(fù)制代碼 代碼如下:

static void Main(string[] args)
{
    DoSomething( scroll : "no",height : 10, width : 5, openerName : "windowname");
    Console.ReadLine(); 
}

很顯然的這是一個(gè)語(yǔ)法糖,但是在方法參數(shù)很多的情況下很有意義,可以增加代碼的可讀性。

相關(guān)文章

  • 在unity腳本中控制Inspector面板的參數(shù)操作

    在unity腳本中控制Inspector面板的參數(shù)操作

    這篇文章主要介紹了在unity腳本中控制Inspector面板的參數(shù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • C#基礎(chǔ)之泛型

    C#基礎(chǔ)之泛型

    泛型是 2.0 版 C# 語(yǔ)言和公共語(yǔ)言運(yùn)行庫(kù) (CLR) 中的一個(gè)新功能。接下來(lái)通過(guò)本文給大家介紹c#基礎(chǔ)之泛型,感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • C#中的yield關(guān)鍵字詳解

    C#中的yield關(guān)鍵字詳解

    本文詳細(xì)講解了C#中的yield關(guān)鍵字,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • C#影院售票系統(tǒng)畢業(yè)設(shè)計(jì)(4)

    C#影院售票系統(tǒng)畢業(yè)設(shè)計(jì)(4)

    這篇文章主要介紹了C#影院售票系統(tǒng)畢業(yè)設(shè)計(jì),學(xué)習(xí)內(nèi)容是總結(jié)銷售信息的保存以及加載銷售信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-11-11
  • C#端口掃描器的編寫方法

    C#端口掃描器的編寫方法

    這篇文章主要為大家詳細(xì)介紹了C#端口掃描器的編寫方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C#/VB.NET 實(shí)現(xiàn)在PDF表格中添加條形碼

    C#/VB.NET 實(shí)現(xiàn)在PDF表格中添加條形碼

    條碼的應(yīng)用已深入生活和工作的方方面面。在處理?xiàng)l碼時(shí),常需要和各種文檔格式相結(jié)合。本文,以操作PDF文件為例,介紹如何在編輯表格時(shí),向單元格中插入條形碼,需要的可以參考一下
    2022-06-06
  • C#使用HttpClient的正確方式你了解嗎

    C#使用HttpClient的正確方式你了解嗎

    在微服務(wù)架構(gòu)體系中經(jīng)常需要向特定?URL?地址發(fā)送?Http?請(qǐng)求操作,在?.net?core?中?httpClient?使用不當(dāng)會(huì)造成災(zāi)難性的問(wèn)題,這篇文章主要來(lái)分享?.net?core?中通過(guò)?IHttpClientFactory?工廠來(lái)使用?HttpClient?的正確打開(kāi)方式
    2021-11-11
  • 二叉樹(shù)的遍歷算法(詳細(xì)示例分析)

    二叉樹(shù)的遍歷算法(詳細(xì)示例分析)

    以下代碼是對(duì)二叉樹(shù)的遍歷算法進(jìn)行了分析介紹,需要的朋友可以參考下
    2013-05-05
  • c#取得控制臺(tái)應(yīng)用程序根目錄

    c#取得控制臺(tái)應(yīng)用程序根目錄

    編寫程序的時(shí)候,經(jīng)常需要用的項(xiàng)目根目錄?,F(xiàn)在把方法總結(jié)如下分享給大家
    2014-01-01
  • C# datatable 不能通過(guò)已刪除的行訪問(wèn)該行的信息處理方法

    C# datatable 不能通過(guò)已刪除的行訪問(wèn)該行的信息處理方法

    采用datatable.Rows[i].Delete()刪除行后再訪問(wèn)該表時(shí)出現(xiàn)出現(xiàn)“不能通過(guò)已刪除的行訪問(wèn)該行的信息”的錯(cuò)誤
    2012-11-11

最新評(píng)論