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

C# foreach獲取循環(huán)索引的四種方法

 更新時間:2025年03月07日 10:44:18   作者:NotOnlyCoding  
在C#中使用foreach循環(huán)的時候我們有時會碰到需要索引的情況,在for循環(huán)中我們可以得到循環(huán)索引 , foreach并不直接提供 , 下面介紹4種foreach獲取索引的方法,希望對大家有用處,需要的朋友可以參考下

一、手動維護索引變量

‌實現方式‌:

在循環(huán)外部聲明 index 變量,每次循環(huán)時手動遞增:

int index = 0;
foreach (var item in collection)
{
Console.WriteLine($"{index}: {item}");
index++;
}

‌特點‌:

  • 簡單直接,無需引入額外依賴‌。
  • 需注意線程安全及變量作用域問題。

二、LINQ Select + 元組解構

‌實現方式‌:

通過 Select 方法將元素與索引綁定為元組,結合 C# 7.0+ 的元組解構語法:

foreach (var (item, index) in collection.Select((value, i) => (value, i)))
{
Console.WriteLine($"{index}: {item}");
}

‌特點‌:

  • 代碼簡潔,無需外部變量‌。
  • 需注意 System.Linq 命名空間和 System.ValueTuple 包(舊版本需手動安裝)‌。

三、擴展方法封裝

‌實現方式‌:

自定義擴展方法 WithIndex,增強代碼復用性:

public static IEnumerable<(T item, int index)> WithIndex(this IEnumerable source)
{
return source.Select((item, index) => (item, index));
}

// 調用
foreach (var (item, index) in collection.WithIndex())
{
Console.WriteLine($"{index}: {item}");
}

‌特點‌:

  • 提高代碼可讀性和復用性‌。
  • 需在靜態(tài)類中定義擴展方法。

四、IndexOf 方法(需謹慎)

‌實現方式‌:

調用集合的 IndexOf 方法直接獲取元素索引(適用于 List 等支持索引查找的集合):

foreach (var item in collection)
{
int index = collection.IndexOf(item);
Console.WriteLine($"{index}: {item}");
}

特點‌:

  • 依賴集合的 IndexOf 實現,僅適用于元素唯一且支持索引查找的集合‌。
  • 性能較差‌:每次循環(huán)均遍歷集合查找索引,時間復雜度為 O(n^2)‌。
  • 局限性‌:集合中存在重復元素時可能返回錯誤索引。

性能與適用性‌

  • 手動維護索引‌:適用于簡單場景,性能最優(yōu)‌。
  • LINQ 方法‌:引入輕微性能開銷(如迭代器生成),但對大多數場景影響可忽略‌。
  • 擴展方法‌:適合高頻使用場景,平衡性能與代碼整潔度‌。
  • IndexOf:元素唯一且需動態(tài)查找索引,性能差,重復元素不可靠‌。

選擇時需根據具體需求(如代碼簡潔性、性能要求、框架版本兼容性)綜合考量。

到此這篇關于C# foreach獲取循環(huán)索引的四種方法的文章就介紹到這了,更多相關C# foreach獲取索引內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Unity3D實現控制攝像機移動

    Unity3D實現控制攝像機移動

    這篇文章主要為大家詳細介紹了Unity3D實現控制攝像機移動 ,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C# 獲取漢字的拼音首字母

    C# 獲取漢字的拼音首字母

    一種是把所有中文字符集合起來組成一個對照表;另一種是依照漢字在Unicode編碼表中的排序來確定拼音的首字母。碰到多音字時就以常用的為準(第一種方法中可以自行更改,方法為手動把該漢字移動到對應的拼音首字母隊列,我們這里介紹第二種
    2015-06-06
  • WPF實現類似360安全衛(wèi)士界面的程序源碼分享

    WPF實現類似360安全衛(wèi)士界面的程序源碼分享

    最近在網上看到了新版的360安全衛(wèi)士,感覺界面還不錯,于是用WPF制作了一個,時間有限,一些具體的控件沒有制作,用圖片代替了。感興趣的朋友一起跟著小編學習WPF實現類似360安全衛(wèi)士界面的程序源碼分享
    2015-09-09
  • C# 設計模式系列教程-狀態(tài)模式

    C# 設計模式系列教程-狀態(tài)模式

    狀態(tài)模式主要解決的是當控制一個對象狀態(tài)轉換的條件表達式過于復雜時的情況。把狀態(tài)的判斷邏輯轉移到表示不同的一系列類當中,可以把復雜的邏輯判斷簡單化。
    2016-06-06
  • C#中查找Dictionary中的重復值的方法

    C#中查找Dictionary中的重復值的方法

    這篇文章主要介紹了C#中查找Dictionary中的重復值的方法,需要的朋友可以參考下
    2015-09-09
  • Unity實現桌面反彈的示例代碼

    Unity實現桌面反彈的示例代碼

    反彈球是小時候都玩過的網頁小游戲,但是很多人都不知道怎樣實現,本文就來介紹一下Unity實現桌面反彈的示例代碼,感興趣的可以了解一下
    2021-05-05
  • 新手必看Unity2019 2020保姆級安裝教程

    新手必看Unity2019 2020保姆級安裝教程

    這篇文章主要介紹了Unity2019 2020安裝教程,本文分步驟通過圖文并茂的形式給大家介紹Unity2019 2020安裝方法,需要的朋友可以參考下
    2021-05-05
  • c#打印預覽控件中實現用鼠標移動頁面功能代碼分享

    c#打印預覽控件中實現用鼠標移動頁面功能代碼分享

    項目中需要實現以下功能:打印預覽控件中,可以用鼠標拖動頁面,以查看超出顯示范圍之外的部分內容,下面就是實現代碼
    2013-12-12
  • C#代碼實現隱藏或顯示Excel中的批注

    C#代碼實現隱藏或顯示Excel中的批注

    Excel?中的批注是一種附加在單元格上的文本說明,本文將為大家詳細介紹如何通過?C#?在?Excel?中隱藏或顯示批注,有需要的小伙伴可以了解下
    2026-06-06
  • C# 可空類型的具體使用

    C# 可空類型的具體使用

    這篇文章主要介紹了C# 可空類型的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03

最新評論

万载县| 那曲县| 原平市| 泌阳县| 昌图县| 东阳市| 抚远县| 讷河市| 原平市| 玉屏| 富蕴县| 无锡市| 滦平县| 隆林| 米泉市| 武宁县| 阿鲁科尔沁旗| 札达县| 恩平市| 莱芜市| 江安县| 义乌市| 比如县| 无为县| 沙湾县| 张家港市| 永新县| 大荔县| 乳山市| 浠水县| 炎陵县| 秦皇岛市| 石嘴山市| 绥江县| 上栗县| 芷江| 洪湖市| 海门市| 内江市| 苏尼特右旗| 长宁区|