C#中命名參數(shù)和可選參數(shù)
一、簡(jiǎn)介
設(shè)計(jì)方法的參數(shù)是,可以將部分參數(shù)和全部參數(shù)分配默認(rèn)值,然后調(diào)用這些方法的時(shí)候可以選擇不提供部分實(shí)參,使用參數(shù)定義的默認(rèn)值,另外,還可以在調(diào)用方法的時(shí)候通過(guò)指定參數(shù)名稱(chēng)來(lái)傳遞實(shí)參。
二、代碼案例
class Program
{
private static int s = 0;
private static int s_n = 0;
private static void Mothed(int x = 9, string s = "A", DateTime dt = default(DateTime), Guid guid = new Guid())
{
Console.WriteLine("x={0},s={1},dt={2},guid={3}", x, s, dt, guid);
}
static void Main(string[] args)
{
Mothed();//等同于Mothed(9,"A",default(Datetime),new Guid())
Mothed(8, "X");//等同于Mothed(8,"X",default(Datetime),new Guid())
Mothed(5, guid: Guid.NewGuid(), dt: DateTime.Now);//等同于Mothed(5,"A",DateTime.Now,Guid.NewGuid())
Mothed(s_n++, s_n++.ToString());//等同于Mothed(0,"1",default(Datetime),new Guid());
Mothed(s: (s_n++).ToString(), x: s_n++);//等同于一下兩行代碼,注意此處的參數(shù)順序無(wú)關(guān),和形參的名稱(chēng)對(duì)應(yīng)
//string t1="2";
//int32 t2=3;
//Mothed(t2,t1,default(Datetime),new Guid())
}
}向方法傳遞實(shí)參時(shí),編譯器從左到右的順序?qū)?shí)參進(jìn)行求值。在對(duì)Mothed的第四個(gè)調(diào)用中s_n的當(dāng)前默認(rèn)值是0,先遞增然后等于1轉(zhuǎn)為string傳遞給s,然后繼續(xù)遞增到2(s_n++先使用后遞增)傳給x。
三、總結(jié)
1.實(shí)參可按照任意順序傳遞,但命名實(shí)參必須且只能出現(xiàn)在實(shí)參列表尾部,如上述代碼第三種調(diào)用方式。
2.可以按照名稱(chēng)將實(shí)參傳遞給沒(méi)有默認(rèn)值的參數(shù)。但所有必須的實(shí)參都必須傳遞(無(wú)論按照位置還是按照名稱(chēng)),編譯器才能編譯代碼。
3.C#不允許省略逗號(hào)之間的實(shí)參,比如M(1,,DateTime.New).因?yàn)檫@樣會(huì)造成可讀性的影響,程序員將被迫去讀 逗號(hào),對(duì)于沒(méi)有默認(rèn)值的參數(shù),如果想省略它們的實(shí)參,以傳參數(shù)名的方式傳遞實(shí)參即可。
到此這篇關(guān)于C#中命名參數(shù)和可選參數(shù)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#獲取某路徑文件夾中全部圖片或其它指定格式的文件名的實(shí)例方法
在本篇文章里小編給大家整理的是關(guān)于C#獲取某路徑文件夾中全部圖片或其它指定格式的文件名的實(shí)例方法,需要的朋友們參考下。2019-10-10
C#中使用CAS實(shí)現(xiàn)無(wú)鎖算法的示例詳解
CAS(Compare-and-Swap)是一種多線程并發(fā)編程中常用的原子操作,用于實(shí)現(xiàn)多線程間的同步和互斥訪問(wèn)。本文將利用CAS實(shí)現(xiàn)無(wú)鎖算法,需要的可以參考一下2023-04-04
C#結(jié)合數(shù)據(jù)庫(kù)實(shí)現(xiàn)驗(yàn)證識(shí)別ID卡內(nèi)容的方法
這篇文章主要介紹了C#結(jié)合數(shù)據(jù)庫(kù)實(shí)現(xiàn)驗(yàn)證識(shí)別ID卡內(nèi)容的方法,非常實(shí)用的功能,需要的朋友可以參考下2014-07-07
在.NET框架使用C#實(shí)現(xiàn)PDF文件轉(zhuǎn)為HTML格式的步驟
HTML作為一種開(kāi)放標(biāo)準(zhǔn)的網(wǎng)頁(yè)標(biāo)記語(yǔ)言,具有跨平臺(tái)、易于瀏覽和搜索引擎友好的特性,通過(guò)將PDF文件轉(zhuǎn)換為HTML格式,我們可以更方便地在瀏覽器中展示PDF文檔內(nèi)容,本文將介紹如何在.NET框架使用C#將PDF文件轉(zhuǎn)換為HTML格式,需要的朋友可以參考下2025-01-01
C#實(shí)現(xiàn)ComboBox控件顯示出多個(gè)數(shù)據(jù)源屬性的方法
這篇文章主要介紹了C#實(shí)現(xiàn)ComboBox控件顯示出多個(gè)數(shù)據(jù)源屬性的方法,實(shí)例分析了ComboBox控件的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
解決C#運(yùn)行程序修改數(shù)據(jù)后數(shù)據(jù)表不做更新的問(wèn)題
近日,在使用C#連接數(shù)據(jù)庫(kù)的時(shí)候,對(duì)數(shù)據(jù)庫(kù)中的表做更新后,在當(dāng)前啟動(dòng)項(xiàng)目中去顯示表數(shù)據(jù)時(shí)雖然會(huì)發(fā)生一個(gè)更新,但是在結(jié)束程序運(yùn)行后再去觀察數(shù)據(jù)表中的記錄時(shí)發(fā)現(xiàn)并沒(méi)有發(fā)生一個(gè)變化,所以本文給大家解決一下這個(gè)問(wèn)題,需要的朋友可以參考下2023-08-08

