只有累積,沒有奇蹟

顯示具有 Array 標籤的文章。 顯示所有文章
顯示具有 Array 標籤的文章。 顯示所有文章

2018年9月22日 星期六

[C#] 刪除 Array 陣列中指定的元素

前言
此文章紀錄如何移除 Array 陣列中指定的元素!
想要移除 Array 陣列中某項特定的元素,但發現因 Array 類別中,沒有類似 Remove 的方法可使用  QAQ
如下圖所示:
Array
查了一下Array 成員,發現公用方法中並沒有 Remove 方法,但在.NET Framework 2.0 中 Array 類別有實做 IListICollection 和 IEnumerable 泛型介面

使用 LINQ

int[] myNumbers = { 1, 30, 26, 53, 97, };

int myRemoveNum = 53;

myNumbers = myNumbers.Where(val => val != myRemoveNum).ToArray();
.NET Framework 3.5
namespace:System.Linq
透過 Enumerable.Where<TSource>方法,找出輸入資料符合條件的項目。

不使用 LINQ

int[] myNumbers = { 1, 30, 26, 53, 97, };

int myRemoveNum = 53;

myNumbers = Array.FindAll(myNumbers, val => val != myRemoveNum).ToArray();
.NET Framework 2.0
透過 Array.FindAll 泛型方法取得符合條件的所有元素。

以上情況都是假設元素是不重複的情況下使用,但如果陣列中有可能元素重複的話
可以透過 Array.IndexOf 方法找到第一個符合項目的資料,詳細可以參考 這裡

參考

2018年9月19日 星期三

[C#] Array陣列中加入元素

前言
此篇文章是要記錄 如何在Array陣列中加入元素 之前是 如何移除 Array 陣列中指定的元素 )
查了一下MSDN Array 陣列成員 不提供add的方法加入新的元素
但仔細看了一下成員中的方法,可以發現有個公用方法
Array.Resize 方法說明:將陣列的大小變更為指定之新大小
雖然沒有add方法,但也可以用 array.resize 方法達到相同的效果。

使用方式
作法很簡單,如下所示

string[] myArray = { "hello", "world", "array" };

            // 調整陣列的大小
            System.Array.Resize(ref myArray, myArray.Length + 1);
            // 指定新的陣列值
            myArray[myArray.Length - 1] = "success";
此方法適用於在陣列中+1項元素時使用,在 Array 類別有實做 IListICollection 和 IEnumerable 泛型介面
也可以透過其他方法達到此效果,其他方法詳細可以參考 這裡
新手上路,請多多指教!

參考

2018年9月14日 星期五

[C#] 如何取得二維陣列最大與最小值

廢話
在論壇看到有人提出此問題,怕之後忘記,做個筆記記錄一下

一維陣列
首先來看,一維陣列取最大值與最小值的方式
int[] myIntArray = new int[5] { 1, 5, 9, 11, 18 };
            
myIntArray.Max();   // 最大值
myIntArray.Min();   // 最小值
這很簡單,相信大家都比我還要熟悉

二維陣列
    如果今天換成是二維陣列時,該如何取得最大與最小值呢?(只能用陣列、不能使用其他方法)
看到這問題我第一個想法是在塞入二維陣列資料時,在用一個變數去記錄最大數(或最小數)
查了一下MSDN與Google之後,發現有更簡單的作法
var myArr = new int[1, 99] { { 2, 2 }, { 3, 4 } };

int max = myArr.Cast<int>().Max();
int min = myArr.Cast<int>().Min();
    在.NET Framework 3.5之後,Array類別實做了System.Collections.Generic.IEnumerable<T> 介面(記得要加入System.Linq 命名空間),我們可以使用 Enumerable.Max<TResult>方法取得我們要的答案。打完收工!

參考

Copyright © m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com