【C#】ToArray的使用

在 C# 中,ToArray 方法通常用于將實現了 IEnumerable<T> 接口的集合(如 List<T>)轉換為數組。這個方法是 LINQ 提供的一個擴展方法,位于 System.Linq 命名空間中。因此,在使用 ToArray 方法之前,請確保已經在文件頂部添加了 using System.Linq;

將?List<int>?轉換為?int[]

using System;
using System.Collections.Generic;
using System.Linq; // 引入 System.Linq 命名空間class Program
{static void Main(){List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };int[] numbersArray = numbers.ToArray(); // 使用 ToArray 方法Console.WriteLine("數組長度:" + numbersArray.Length);foreach (var number in numbersArray){Console.Write(number + " ");}}
}

將自定義對象的?List<T>?轉換為數組

假設有一個自定義類 Person,并且你想將一個 List<Person> 轉換成 Person[] 數組。

using System;
using System.Collections.Generic;
using System.Linq;class Person
{public string Name { get; set; }public int Age { get; set; }
}class Program
{static void Main(){List<Person> people = new List<Person>{new Person { Name = "Alice", Age = 30 },new Person { Name = "Bob", Age = 25 }};Person[] peopleArray = people.ToArray();foreach (var person in peopleArray){Console.WriteLine($"姓名: {person.Name}, 年齡: {person.Age}");}}
}

其他轉換方法

ToList()

  • 這是另一個 LINQ 擴展方法,用于將實現了?IEnumerable<T>?接口的對象轉換為?List<T>
int[] numbersArray = { 1, 2, 3, 4, 5 };
List<int> numbersList = numbersArray.ToList();

?Cast<TResult>()

  • 當你需要將非泛型的?IEnumerable?轉換為泛型版本時使用。它嘗試將集合中的每個元素都轉換為你指定的類型。
ArrayList list = new ArrayList() { 1, 2, 3 };
IEnumerable<int> intEnumerable = list.Cast<int>();

OfType<TResult>()

  • 類似于?Cast<TResult>(),但它只會返回那些能夠成功轉換為目標類型的元素,不會拋出異常。
ArrayList list = new ArrayList() { 1, "two", 3 };
IEnumerable<int> intEnumerable = list.OfType<int>();

?

注意事項

  • 引入命名空間:記得引入?System.Linq?命名空間以使用?ToArray?方法。
  • 性能考慮:每次調用?ToArray()?都會創建一個新的數組,并將原始集合中的元素復制到新數組中。如果處理的是大型集合,頻繁調用此方法可能會影響性能。
  • 只讀性:轉換后的數組與原集合是分離的,這意味著對其中一個的修改不會影響另一個。
  • 線程安全:如果在多線程環境中操作集合或數組,請確保采取適當的同步措施。例如,使用 lock 關鍵字或其他并發控制機制來防止數據競爭。

  • 不可變性:一旦通過 ToArray()ToList() 創建了一個新集合,對原集合的修改不會影響到新集合,反之亦然。這對于希望隔離數據變化的情況很有用,但也要注意不要誤以為對一個集合的更改會影響到另一個。

  • 兼容性和類型安全:在使用 Cast<TResult>()OfType<TResult>() 時要注意目標類型是否與源集合中的元素兼容,以避免運行時錯誤。

總之,ToArray() 是一個非常實用的方法,能夠簡化從集合到數組的轉換過程,適用于需要數組作為參數的情況或當你希望以固定大小的形式存儲數據時。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80220.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80220.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80220.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

資產管理平臺—chemex

1、簡介 Chemex CMDB&#xff08;Configuration Management Database&#xff09;是一個基于現代微服務架構的資產管理與自動化平臺&#xff0c;專為 IT 基礎設施與業務資產管理而設計。其核心目標是解決大規模系統運維中資產信息混亂、配置分散、數據不一致等問題&#xff0c…

【AI】mcp server是什么玩意兒

文章目錄 背景mcp server的必要性mcp server的基本概念mcp server的架構與核心組件總結 背景 劈里啪啦的整了一堆概念&#xff0c;對mcp server還是只停留在知道個詞的地步。 雖然目前大模型的對話生成能力很強&#xff0c;但是大模型&#xff08;如deepseek&#xff09;并不能…

c# 數據結構 樹篇 入門樹與二叉樹的一切

事先聲明,本文不適合對數據結構完全不懂的小白 請至少學會鏈表再閱讀 c# 數據結構 鏈表篇 有關單鏈表的一切_c# 鏈表-CSDN博客 數據結構理論先導:《數據結構&#xff08;C 語言描述&#xff09;》也許是全站最良心最通俗易懂最好看的數據結構課&#xff08;最遲每周五更新~~&am…

《Cookie Cutter》中2000多張精靈表與10000個2D光源的管理之道

一個小團隊如何在多個平臺上以優秀的效果展示手繪動畫&#xff1f;Subcult Joint 工作室給出了答案。他們用六年時間開發出了游戲《Cookie Cutter》。游戲中使用了數千個使用傳統動畫技術制作的高分辨率資產&#xff0c;而且這些資產都在 Unity 中進行了優化。由于工作室需要在…

什么是實景VR?實景VR應用場景

實景VR&#xff0c;即基于真實場景的虛擬現實技術&#xff0c;是利用計算機技術生成三維環境&#xff0c;以模擬并再現真實世界場景的技術。 用戶通過佩戴VR設備&#xff08;如VR頭盔、手柄等&#xff09;或通過電腦設備&#xff0c;可以沉浸在一個高度仿真的虛擬環境中&#…

內核性能測試(60s不丟包性能)

以xGAP-200-SE7K-L&#xff08;雙口10G&#xff09;在飛騰D2000上為例&#xff08;單通道最高性能約2.8Gbps) 單口測試 0口&#xff1a; tcp&#xff1a; taskset -c 4 iperf -c 1.1.1.1 -i 1 -t 60 -p 60001 taskset -c 4 iperf -s -i 1 -p 60001 udp&#xff1a; taskse…

58. 區間和

題目鏈接&#xff1a; 58. 區間和 題目描述&#xff1a; 給定一個整數數組 Array&#xff0c;請計算該數組在每個指定區間內元素的總和。 輸入描述 第一行輸入為整數數組 Array 的長度 n&#xff0c;接下來 n 行&#xff0c;每行一個整數&#xff0c;表示數組的元素。隨后…

C#進階(2)stack(棧)

前言 我們前面介紹了ArrayList,今天就介紹另一種數據結構——棧。 這是棧的基本形式,博主簡單畫了一下,你看個意思就行,很明顯,這種數據有一種特征:先進后出。因為先進來的數據會在下面,下面是密閉的,所以只能取后面進來的。 C#為我們封好了這種數據結構,我們不用擔…

汽車工廠數字孿生實時監控技術從數據采集到三維驅動實現

在工業智能制造推動下&#xff0c;數字孿生技術正成為制造業數字化轉型的核心驅動力。今天詳細介紹數字孿生實時監控技術在汽車工廠中的應用&#xff0c;重點解析從數據采集到三維驅動實現的全流程技術架構&#xff0c;并展示其在提升生產效率、降低成本和優化決策方面的顯著價…

git|gitee倉庫同步到github

參考&#xff1a;一次提交更新兩個倉庫&#xff0c;Get 更優雅的 GitHub/Gitee 倉庫鏡像同步 文章目錄 進入需要使用鏡像功能的倉庫&#xff0c;進入「管理」找到「倉庫鏡像管理」選項&#xff0c;點擊「添加鏡像」按鈕綁定github綁定成功后再次點擊添加鏡像如何申請 GitHub 私…

原生小程序+springboot+vue+協同過濾算法的音樂推薦系統(源碼+論文+講解+安裝+部署+調試)

感興趣的可以先收藏起來&#xff0c;還有大家在畢設選題&#xff0c;項目以及論文編寫等相關問題都可以給我留言咨詢&#xff0c;我會一一回復&#xff0c;希望幫助更多的人。 系統背景 在數字音樂產業迅猛發展的當下&#xff0c;Spotify、QQ 音樂、網易云音樂等音樂平臺的曲…

RustDesk

配置中繼服務器 https://rustdesk.com/docs/zh-cn/self-host/windows/ 服務器端 下載Windows版本 rustdesk-server-windows-x86_64.zip&#xff0c;安裝路徑為&#xff1a;C:\Program Files\RustDeskServer\bin。執行 hbbr.exe 和 hbbs.exe 兩個應用程序。這兩個應用提供了兩…

django中用 InforSuite RDS 替代memcache

在 Django 項目中&#xff0c;InforSuite RDS&#xff08;關系型數據庫服務&#xff09;無法直接替代 Memcached&#xff0c;因為兩者的設計目標和功能定位完全不同&#xff1a; 特性MemcachedInforSuite RDS核心用途高性能內存緩存&#xff0c;臨時存儲鍵值對數據持久化關系型…

leetcode 57. Insert Interval

題目描述 代碼&#xff1a;由于intervals已經按照左端點排序&#xff0c;并且intervals中的區間全部不重疊&#xff0c;那么可以斷定intervals中所有區間的右端點也已經是有序的。先二分查找intervals中第一個其右端點>newInterval左端點的區間。然后按照類似于56. Merge In…

去年開發一款鴻蒙Next Os的window工具箱

持拖載多個鴻蒙應用 批量簽名安裝 運行 http://dl.lozn.top/lozn/HarmonySignAndFileManagerTool_2024-11-26.zip 同類型安卓工具箱以及其他軟件下載地址匯總 http://dl.lozn.top/lozn/ 怎么個玩法呢&#xff0c;比如要啟動某app, 拖載識別到包名 點啟動他能主動讀取包名 然后…

Trivy:讓你時刻掌控的開源安全掃描器

深入了解 Trivy:全面的安全掃描工具 在如今互聯網快速發展的時代,軟件的安全性顯得尤為重要。隨著應用程序的復雜性增加,其可能帶來的安全漏洞也在不斷增多。如何快速、準確地發現這些潛在威脅是每個開發者和運維人員心中的課題。今天,我們將為大家介紹一個開源的安全掃描…

網址為 http://xxx:xxxx/的網頁可能暫時無法連接,或者它已永久性地移動到了新網址

這是由于瀏覽器默認的非安全端口所導致的&#xff0c;所謂非安全端口&#xff0c;就是瀏覽器出于安全問題&#xff0c;會禁止一些網絡瀏覽向外的端口。 避免使用6000,6666這樣的端口 6000-7000有很多都不行&#xff0c;所以盡量避免使用這個區間 還有在云服務器中&#xff0c…

Jenkins 執行器(Executor)如何調整限制?

目錄 現象原因解決 現象 Jenkins 構建時&#xff0c;提示如下&#xff1a; 此刻的心情正如上圖中的小老頭&#xff0c;火冒三丈&#xff0c;但是不要急&#xff0c;因為每一次錯誤&#xff0c;都是系統中某個環節在說‘我撐不住了’。 原因 其實是上圖的提示表示 Jenkins 當…

運維實施31-NFS服務

NFS概述 NFS&#xff08;Network File System&#xff09;網絡文件系統&#xff0c;主要用于Linux系統上實現文件共享的一種協議&#xff0c;其客戶端主要是Linux。 沒有用戶認證機制&#xff0c;且數據在網絡上傳送的時候是明文傳送&#xff0c;一般只能在局域網中使用支持多…

藍牙協議架構與調試工具詳解(含 BLE、HCI 命令、調試命令)

本文介紹藍牙協議從物理層到應用層的完整通信流程&#xff0c;并詳解了 Linux 下主流藍牙調試工具的使用方法&#xff0c;適用于嵌入式藍牙驅動開發、BLE調試、通信協議分析等場景。 &#x1f527; 1. 藍牙架構概覽 ? 芯片架構 單模芯片&#xff1a;僅支持 BLE 或 Classic 藍…