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

C# 中 System.Index 結(jié)構(gòu)體和 Hat 運算符(^)的使用示例

 更新時間:2020年09月28日 08:39:22   作者:技術(shù)譯站  
這篇文章主要介紹了C# 中 System.Index 結(jié)構(gòu)體和 Hat 運算符(^)的使用示例,幫助大家更好的理解和使用C#,感興趣的朋友可以了解下

翻譯自 John Demetriou 2019年2月17日 的文章 《C# 8 – Introducing Index Struct And A Brand New Usage For The Hat Operator》

今天我們要講的是 Hat 運算符(^)。目前為止,Hat 運算符(^)已經(jīng)被用作布爾類型的異或運算符,以及字節(jié)、整型類型的按位異或運算符。在 C# 8 中,它有一個新的用法。

這個運算符的新用法是自動創(chuàng)建 Index 結(jié)構(gòu)體的實例。那什么是 Index 結(jié)構(gòu)呢?這在 C# 8 中也有介紹。
Index 結(jié)構(gòu)體的代碼(就像所有的 C# 代碼一樣)可以在github 上找到。你可以看到,它是一個相當(dāng)簡單的結(jié)構(gòu)體,包含一個整數(shù)值,和一個定義是否應(yīng)該從末尾開始計數(shù)的布爾值。
它有助于讓訪問數(shù)組比以往容易很多。我們可以很輕松地將這個值存儲在一個 Index 類型中來代替一個整數(shù),它比一個簡單的整數(shù)更清楚地定義了我們的意圖,并有助于避免該變量的誤用。

到目前為止,當(dāng)嘗試訪問數(shù)組中特定索引處的值時,我們總是從第一個元素開始考慮。那么 Hat 運算符(^)是如何幫助我們的呢?例如,如果你想獲取一個已知大小的數(shù)組的最后一個的元素,你通常會從數(shù)組的 Length 中減去 1,并在檢索時使用這個技巧或硬編碼的數(shù)字。

例如:

int[] array = new int[] { 1, 3, 5, 7, 9 };
var x = array[4];

你可以像下面的例子一樣使用數(shù)組提供的變量:

int[] array = new int[] { 1, 3, 5, 7, 9 };
var x = array[array.Length - 1];

這種方法也可以用于編譯時長度未知的數(shù)組。并且這通常是首選方法,因為它表明您希望更容易地檢索最后一項,而不是必須進行計數(shù)來查看哪個是第四項并驗證它是最后一項。

適當(dāng)?shù)氖褂?Index 結(jié)構(gòu),我們可以很容易地創(chuàng)建一個索引值類型,這樣我們就可以存儲它并隨心地重用它,以避免違反 DRY 原則。

Index lastItem = new Index(4, false);
int[] array = new int[] { 1, 3, 5, 7, 9 };
var x = array[lastItem];

譯者注:
DRY 是 “Don't repeat yourself” 的縮寫,是軟件開發(fā)的一個原則,旨在減少軟件模式的重復(fù),用抽象來替代它,或者使用數(shù)據(jù)規(guī)范化來避免冗余。也就是說,在一個設(shè)計里,對于任何東西,都應(yīng)該有且只有一個表示,其它的地方都應(yīng)該引用這一處。這樣需要改動的時候,只需調(diào)整這一處,所有的地方就都變更過來了。

但正如我們所看到的,我們還可以使用 fromEnd 參數(shù)來更好地表達我們希望檢索最后一項,并在編譯時從一個大小未知的數(shù)組中檢索最后一項。

Index lastItem = new Index(1, true);
int[] array = new int[] { 1, 3, 5, 7, 9 };
var x = array[lastItem];

不過,我們需要記住的一點是,當(dāng)從末尾開始計數(shù)時,不是以 0 開始的索引。把它想象成我們使用的 Length - x ,其中 x 就是我們在 Index 結(jié)構(gòu)體構(gòu)造函數(shù)中使用的值。

但是 Hat 運算符(^)在這一切中有何用武之地呢?唔,Hat 運算符(^) 是調(diào)用 Index 結(jié)構(gòu)體時將 fromEnd 設(shè)置為 true 的簡寫方式。 比如,下面的兩行是完全相同的:

Index lastItem = new Index(1, true); // line 1
int[] array = new int[] { 1, 3, 5, 7, 9 };
var x = array[lastItem];

Index lastItem = ^1; //line 2, 同 line 1
int[] array = new int[] { 1, 3, 5, 7, 9 };
var x = array[lastItem];

或者,如果你想要檢索倒數(shù)第二項,你可以這么做:

Index secondToLast = new Index(2, true);
int[] array = new int[] { 1, 3, 5, 7, 9 };
var x = array[secondToLast];

Index secondToLast = ^2;
int[] array = new int[] { 1, 3, 5, 7, 9 };
var x = array[secondToLast];

就這樣,一個新的結(jié)構(gòu)體類型和一個舊運算符(^)的新用法打包在一起了。

作者 : John Demetriou
譯者 : 技術(shù)譯民
出品 : 技術(shù)譯站
鏈接 : 英文原文

以上就是C# 中 System.Index 結(jié)構(gòu)體和 Hat 運算符(^)的使用示例的詳細內(nèi)容,更多關(guān)于C# 中 System.Index 結(jié)構(gòu)體和 Hat 運算符的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#在圖片增加文字的實現(xiàn)代碼

    C#在圖片增加文字的實現(xiàn)代碼

    最近做項目需要動態(tài)給圖片增加文字(書本的封面圖片),修改字體大小、字體、顏色、控制位置等,下面通過實例代碼給大家分享C#在圖片增加文字的實現(xiàn)代碼,一起看看吧
    2017-06-06
  • c# 反射+自定義特性保存數(shù)據(jù)至本地

    c# 反射+自定義特性保存數(shù)據(jù)至本地

    這篇文章主要介紹了c# 反射+自定義特性保存數(shù)據(jù)至本地的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • 淺析WPF中控件拖拽與拖動的實現(xiàn)

    淺析WPF中控件拖拽與拖動的實現(xiàn)

    這篇文章主要為大家詳細介紹了如何在WPF中實現(xiàn)控件拖拽與拖動的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • Unity OnGUI實時顯示游戲FPS

    Unity OnGUI實時顯示游戲FPS

    這篇文章主要為大家詳細介紹了Unity OnGUI實時顯示游戲FPS,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C#中GDI+繪制圓弧及圓角矩形等比縮放的繪制

    C#中GDI+繪制圓弧及圓角矩形等比縮放的繪制

    這篇文章主要介紹了C#中GDI+繪制圓弧及圓角矩形等比縮放的繪制,文章圍繞主題展開詳細的內(nèi)容戒殺,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • C#基礎(chǔ)語法:方法參數(shù)詳解

    C#基礎(chǔ)語法:方法參數(shù)詳解

    這篇文章主要介紹了C#基礎(chǔ)語法:方法參數(shù)詳解,本文講解了值參數(shù)、引用參數(shù)、輸出參數(shù)、參數(shù)數(shù)組等參數(shù)類型,并分別給出代碼實例,需要的朋友可以參考下
    2015-06-06
  • C#實現(xiàn)打印與打印預(yù)覽功能的思路及代碼

    C#實現(xiàn)打印與打印預(yù)覽功能的思路及代碼

    這篇文章主要介紹了C#實現(xiàn)打印與打印預(yù)覽功能的思路及代碼,有需要的朋友可以參考一下
    2013-12-12
  • Unity?使用tiledmap解析地圖的詳細過程

    Unity?使用tiledmap解析地圖的詳細過程

    這篇文章主要介紹了Unity?使用tiledmap解析地圖,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C# 6.0 的知識梳理

    C# 6.0 的知識梳理

    目前最新的版本是C# 7.0,VS的最新版本為Visual Studio 2017 RC,兩者都尚未進入正式階段。C# 6.0雖說出了一段時間,但是似乎有許多人對這一塊知識并不了解。本文將對C# 6.0的知識進行梳理,下面跟著小編一起來看下吧
    2016-12-12
  • 淺析C# 裝箱和拆箱

    淺析C# 裝箱和拆箱

    這篇文章主要介紹了C# 裝箱和拆箱的相關(guān)資料,文中示例代碼非常詳細,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評論

宣汉县| 夹江县| 泾川县| 浮山县| 石景山区| 从化市| 泊头市| 阿拉善盟| 晋城| 翁牛特旗| 阿拉善盟| 新兴县| 元阳县| 来宾市| 张家港市| 松原市| 汤阴县| 句容市| 富平县| 宁德市| 陕西省| 胶州市| 洛浦县| 永定县| 四子王旗| 新河县| 霍林郭勒市| 孝昌县| 定襄县| 格尔木市| 玉树县| 横山县| 克拉玛依市| 原阳县| 玛沁县| 金乡县| 潮安县| 通海县| 通城县| 甘孜| 山东|