免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

C# 7.0 添加和增強(qiáng)的功能【基礎(chǔ)篇】

C# 7.0 版是與 Visual Studio 2017 一起發(fā)布 。雖然該版本繼承和發(fā)展了C# 6.0,但不包含編譯器即服務(wù) 。
一、out 變量以前我們使用out變量必須在使用前進(jìn)行聲明,C# 7.0給我們提供了一種更簡潔的語法 “使用時進(jìn)行內(nèi)聯(lián)聲明”。如下所示:
var input = ReadLine();if (int.TryParse(input, out var num))//可直接寫明變量的類型也可以寫隱式類型,因為out關(guān)鍵字修飾的一定是局部變量{WriteLine("您輸入的數(shù)字是:{0}",num);}所謂的 “內(nèi)聯(lián)聲明” 編譯后就是以前的原始寫法,只是現(xiàn)在由編譯器來完成 。即編譯后為:
int num;//提前聲明string s = Console.ReadLine();if (int.TryParse(s, out num)){Console.WriteLine("您輸入的數(shù)字是:{0}", num);}二、值元組(ValueTuple)使用元組語法,可以在一個語句中分配多個不同類型的變量 。以下是幾種常用的寫法:
//聲明命名項元組并為其分配元組值,再按名稱訪問元組項(string Name, string Capital, double GdpPerCapita) countryInfo = ("Malawi", "Lilongwe", 226.50);System.Console.WriteLine($@"The poorest country in the world in 2017 was {countryInfo.Name}, {countryInfo.Capital}: {countryInfo.GdpPerCapita}");//將元組分配到各個已聲明且使用分布式語法進(jìn)行隱式類型化的變量中var (country, capital, gdpPerCapita) = ("Malawi", "Lilongwe", 226.50);System.Console.WriteLine($@"The poorest country in the world in 2017 was {country}, {capital}: {gdpPerCapita}");//將命名項元組分配到一個隱式類型化變量中,再按名稱訪問元組項var countryInfo = (Name:"Malawi", Capital:"Lilongwe", GdpPerCapita:226.50);System.Console.WriteLine($@"The poorest country in the world in 2017 was {countryInfo.Name}, {countryInfo.Capital}: {countryInfo.GdpPerCapita}");//將未命名的元組分配到一個隱式類型化變量中,再按 Item-number 屬性訪問元組元素var countryInfo = ("Malawi", "Lilongwe", 226.50);System.Console.WriteLine($@"The poorest country in the world in 2017 was {countryInfo.Item1}, {countryInfo.Item2}: {countryInfo.Item3}");//使用下劃線放棄相應(yīng)的元組部分(string name, _, double gdpPerCapita) countryInfo = ("Malawi", "Lilongwe", 226.50);元組是用于將數(shù)據(jù)封裝到一個對象的輕型解決方案,就像用袋子將從商店購買的雜項物品裝在一起一樣 。
與數(shù)組不同,元組包含的項數(shù)據(jù)類型可以不同,幾乎不受任何限制(盡管不允許使用指針),但需要由代碼標(biāo)識,且不能在運行時更改,這兩點限制除外 。
此外,不同于數(shù)組的是,編譯時也會對元組內(nèi)的項數(shù)量進(jìn)行硬編碼 。
另外,元組(Tuple)在 .Net 4.0 的時候就有了,值元組(ValueTuple)的出現(xiàn),彌補(bǔ)了老版的兩個缺點:
??1)ValueTuple 支持語義上的字段命名 。舍棄僅按照順序取值(Item1,Item2...),增強(qiáng)了可讀性 。
??2)ValueTuple 是值類型(Struct) 。舍棄原來的引用類型,更為輕量化 。
三、析構(gòu)元組和其他類型在 C# 7.0 及更高版本中,用戶可從元組中檢索多個元素,或者在單個析構(gòu)操作中從對象檢索多個字段值、屬性值和計算值 。若要析構(gòu)元組,可將其元素分配給各個變量 。析構(gòu)對象時,將選定值分配給各個變量 。
原來的做法是:一旦檢索到元組,就必須處理它的各個元素 。按元素逐個操作比較麻煩,如下例所示 。 QueryCityData 方法返回一個三元組,并通過單獨的操作將其每個元素分配給一個變量 。
public class Example{public static void Main(){var result = QueryCityData("New York City"); // 返回全部字段var city = result.Item1; // 再逐個賦值var pop = result.Item2;var size = result.Item3;}private static (string, int, double) QueryCityData(string name){if (name == "New York City")return (name, 8175133, 468.48);return ("", 0, 0);}}

經(jīng)驗總結(jié)擴(kuò)展閱讀