陣列Array的操作

陣列(Array)是程式語言中最常用的的數據類型之一, 由於 C#語言是Managed程式碼(統一由Common Language Runtime管理維護), 因此在C#使用陣列的時候, 用戶不需要考慮記憶體地址、資源開啟/關閉、越界檢查等底層工作, 就像是使用另一種數據格式一樣簡單。

此篇文章介紹了陣列的使用方法, 以及常用的操作, 最後介紹一個簡儀科技提供的dll工具 - SeeSharpTools.JY.ArrayUtility, 讓用戶可以對於陣列操作更快上手

陣列Array


MSDN介紹


在語法上, 陣列使用中括號[ ] 來代表, C#提供了三種陣列 (1)一維陣列 (2)多維陣列 (3)不規則陣列

  • 一維陣列

int[] array1 = new int[5] 
int[] array2 = new int[] { 1, 3, 5, 7, 9 }

顧名思義, 一維陣列就是一個維度的連續數據集合, 初始化的時候可以使用兩種方式, 第一種是指定大小(將長度寫在中括號裏頭), 第二種是直接指定值


  • 多維陣列

int[,] multiDimensionalArray1 = new int[2, 3]
int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } }

多維陣列是用逗點做分割, 初始化的方法跟一維陣列一樣有兩種方式。 需要注意的是多維陣列的長度必須一致, 如果有長度不一致的需要, 請使用不規則陣列(Jagged Array)

  • 不規則陣列(Jagged Array)

int[][] jaggedArray = new int[6][];
int[][] jaggedArray = { new int[]{ 1, 2, 3 }, new int[]{ 1, 2 } }

不規則陣列是由多個一維陣列組合而成, 每個一維陣列的長度可以不同, 標示是由分開的中括號集合而成。在初始化的時候需要先指定第一層陣列的長度

Array類別

C#和C/C++最大的不同點, 在於C#語言中, 陣列本身是一個被定義好的類別/物件, 而在C/C++當中陣列是一個連續的記憶體位址區域。因此C#裡對於陣列, 用戶可以使用抽象的Array基底類別對陣列進行各種操作

MSDN介紹


常用屬性

  • Length - 陣列裡所有維度的元素總和(不規則陣列僅顯示第一維度的長度)

  • Count - 和Length功能相同

  • Rank - 顯示陣列的維度

常用方法

  • Clear - 清空陣列中的元素並設定成元素的預設值

  • Exist - 判定陣列中是否有滿足指定條件的元素

  • Find - 找尋陣列中滿足指定條件的元素

  • FindIndex - 返回陣列中滿足指定條件的元素索引值

  • GetLength - 返回指定維度的長度

  • GetValue - 範圍指定索引位置的值

  • Copy - 從一個陣列複製到另一個陣列


在實際操作過程中, 陣列的複製也可以使用另外一個效率較高的函數 ( Buffer.BlockCopy ) , 這個方法跟Array.Copy的參數一樣, 但是經比較後效率略高於Copy, 在做大量陣列複製的應用中比較適合使用。

陣列的操作


LINQ

陣列在C#裡繼承自不同的介面(Interface), 因此有豐富的延伸方法可以對陣列進行操作, 在此介紹一個延伸的命名空間 System.Linq , Linq是Language-Integrated Query的縮寫, 最原始的出發點是為了更有效率地從資料庫拿回指定的陣列集合, 也可以使用在Array陣列的操作上。常用的一些陣列操作如下

  • Sum - 加總

  • Average - 平均

  • Contain - 判定是否包含滿足條件的元素

  • Max - 最大值

  • Min - 最小值

SeeSharpToosl.JY.ArrayUtility

簡儀科技針對測試測量領域, 新添加了一系列的陣列操作功能, 簡化使用者在程式裡的操作跟程式碼可讀性。功能列舉如下

計算功能

  • Add - 兩個一維陣列(長度需相同)相加

  • Subtract - 兩個一維陣列(長度需相同)相減

  • Multiply - 兩個一維陣列(長度需相同)相乘

  • AddOffset - 將指定的陣列(一維或二維)加上指定值

  • SubtractOffset - 將指定的陣列(一維或二維)減掉指定值

  • MultiplyScale - 將指定的陣列(一維或二維)乘上指定值

  • Zero - 將指定的陣列(一維或二維)其中的值全部設定成0

  • Sum - 加總

  • Average - 平均

  • RMS - 方均根

  • Abs - 絕對值

陣列操作功能

  • GetArraySubset - 取得陣列中指定範圍的一段資料, 適用一維和二維陣列

  • ReplaceArraySubset - 替換陣列中指定範圍的一段資料, 適用一維和二維陣列

  • Transpose - 轉置二維陣列

使用方法很簡單, 首先需要安裝簡儀科技SeeSharpTool的安裝檔(免費), 在原始碼中引用SeeSharpTools.JY.ArrayUtililty 命名空間, 即可使用上方功能。

262 次瀏覽0 則留言

最新文章

查看全部

全新DAQ數據採集卡 - PXIe/PCIe 5500系列

簡儀科技發布全新JY 5500系列DAQ數據採集卡, 針對多功能測量需求的客戶提供完整的產品解決方案。JY 5500系列共有四種型號(5510, 5511, 5515, 5516)以及兩種介面(PXIe, PCIe)可搭配, 未來也會為客戶提供USB的介面選擇。 完整的量測功能 JY 5500系列板卡提供最高到32通道類比輸入, 4通道類比輸出, 32通道數位輸入/輸出功能, 搭配18 bit的A

C# Winform開發的利器 - 銳視測控軟體SeeSharpTools

C#, 自微軟從2000年發布之後, 經過20年的持續淬鍊、迭代,已經成為主流程式語言之一, 同時完整的生態系以及微軟強力的開源策略和支持, 讓C#語言提供最新最即時的語法以及功能。 C#程式語言的應用場景包含兩大類 桌面應用程式 (Winform, WPF) 網頁應用程式 (MVC, ASP.NET, ...) 在現今網路的時代, 桌面應用程式的使用量已經遠少於網頁應用程式。但在測試測量的領域,

Program, Process, Thread 介紹

Program就像是原始碼 , 在IDE編輯修改但還沒執行的程式 Process就像是一個獨立空間, 把各種電腦的實體資源占用下來, 留給程式來執行 Thread就像是執行任務的子空間, 乘載著Process裡頭各種任務 可以得知, 多個Process資源不共用, 而一個Process裡頭可以有很多個Thread, 這些Thread可以共用Process空間裡的資源, 同時這些Thread間也可以