C#把數(shù)組中的某個(gè)元素取出來(lái)放到第一個(gè)位置的實(shí)現(xiàn)方法
本文實(shí)例講述了C#把數(shù)組中的某個(gè)元素取出來(lái)放到第一個(gè)位置的實(shí)現(xiàn)方法。分享給大家供大家參考。具體分析如下:
如何取出數(shù)組中符合某種條件的元素,然后放在數(shù)組最前面,即索引為0的位置?
思路大致如下:
① 找到符合條件的數(shù)組元素,把之賦值給一個(gè)臨時(shí)變量temp,并記下該數(shù)組元素的索引位置,假設(shè)是index
② 在源數(shù)組中,從索引為0的數(shù)組元素開(kāi)始,拷貝index個(gè)數(shù)組元素到另外一個(gè)目標(biāo)數(shù)組
③ 把臨時(shí)變量temp賦值給目標(biāo)數(shù)組索引為0的位置
{
/// <summary>
/// 對(duì)類(lèi)型為T(mén)的數(shù)組進(jìn)行擴(kuò)展,把滿足條件的元素移動(dòng)到數(shù)組的最前面
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="arr">源數(shù)組</param>
/// <param name="match">lamda表達(dá)式</param>
/// <returns></returns>
public static bool MoveToFront<T>(this T[] arr, Predicate<T> match)
{
//如果數(shù)組的長(zhǎng)度為0
if (arr.Length == 0)
{
return false;
}
//獲取滿足條件的數(shù)組元素的索引
var index = Array.FindIndex(arr, match);
//如果沒(méi)有找到滿足條件的數(shù)組元素
if (index == -1)
{
return false;
}
//把滿足條件的數(shù)組元素賦值給臨時(shí)變量
var temp = arr[index];
Array.Copy(arr, 0, arr, 1, index);
arr[0] = temp;
return true;
}
public static void PrintArray<T>(T[] arr)
{
foreach (var item in arr)
{
Console.Write(item + " ");
}
Console.WriteLine();
}
}
以上,是針對(duì)泛型數(shù)組的擴(kuò)展,所以可以直接使用數(shù)組實(shí)例調(diào)用擴(kuò)展方法。
{
static void Main(string[] args)
{
int[] intArr = new int[]{1, 2, 3, 4, 5};
ArrHelper.PrintArray(intArr);
intArr.MoveToFront(i => i == 3);
ArrHelper.PrintArray(intArr);
Console.ReadKey();
}
}
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
利用C#開(kāi)發(fā)瀏覽器擴(kuò)展的全過(guò)程記錄
做web開(kāi)發(fā)的同學(xué),經(jīng)常會(huì)用到各種chrome瀏覽器插件,那么我們寄幾怎么開(kāi)發(fā)一個(gè)插件呢(其實(shí)是瀏覽器擴(kuò)展)?這篇文章主要給大家介紹了關(guān)于利用C#開(kāi)發(fā)瀏覽器擴(kuò)展的相關(guān)資料,需要的朋友可以參考下2021-07-07
winform實(shí)現(xiàn)關(guān)閉按鈕失效的兩種方法
這篇文章主要介紹了winform實(shí)現(xiàn)關(guān)閉按鈕失效的兩種方法,實(shí)例分析了WinForm實(shí)現(xiàn)關(guān)閉按鈕失效的原理與所涉及的相關(guān)技巧,需要的朋友可以參考下2015-09-09
基于C#實(shí)現(xiàn)簡(jiǎn)單離線注冊(cè)碼生成與驗(yàn)證
本文使用RSA非對(duì)稱(chēng)加密和Base64簡(jiǎn)單地實(shí)現(xiàn)離線注冊(cè)碼的生成與驗(yàn)證功能。感興趣的朋友跟著小編一起學(xué)習(xí)吧2015-09-09
C#中創(chuàng)建統(tǒng)一API接口的實(shí)現(xiàn)方案
在 C# 中創(chuàng)建統(tǒng)一 API 接口需要從架構(gòu)設(shè)計(jì)、技術(shù)選型和代碼實(shí)現(xiàn)等多個(gè)層面進(jìn)行規(guī)劃,本文給大家詳細(xì)介紹了實(shí)現(xiàn)方案和完整示例代碼,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2025-04-04
C#使用Thrift作為RPC框架入門(mén)詳細(xì)教程
這篇文件我們講了從0到1使用thrift框架的方法,也講了一些該框架的基本知識(shí),本文將詳細(xì)介紹 Thrift 在C#語(yǔ)言下的使用方式,并且提供豐富的實(shí)例代碼加以解釋說(shuō)明,幫助使用者快速構(gòu)建服務(wù),感興趣的朋友一起看看吧2021-11-11
基于WPF實(shí)現(xiàn)帶蒙版的MessageBox消息提示框
這篇文章主要介紹了如何利用WPF實(shí)現(xiàn)帶蒙版的MessageBox消息提示框,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下2022-08-08
.Net WInform開(kāi)發(fā)筆記(五)關(guān)于事件Event
我前面幾篇博客中提到過(guò).net中的事件與Windows事件的區(qū)別,本文討論的是前者,也就是我們代碼中經(jīng)常用到的Event,感興趣的朋友可以了解下2013-01-01
給c#添加SetTimeout和SetInterval函數(shù)
Javascript中的SetTimeout和SetInterval函數(shù)很方便,把他們移植到c#中來(lái)。2008-03-03

