C#用Array类的Reverse方法反转数组中元素

目录

一、Array.Reverse 方法

1.重载

2.Reverse(Array, Int32, Int32)

3. Reverse(Array)

4.Reverse(T[])

5. Reverse(T[], Int32, Int32)

二、实例

1.Array.Reverse 方法4种重载方法综合实例

2.Reverse(Array)方法的实例


一、Array.Reverse 方法

         反转一维 Array 或部分 Array 中元素的顺序。

1.重载

Reverse(Array, Int32, Int32)反转一维 Array 中元素子集的顺序。
Reverse(Array)反转整个一维 Array 中元素的顺序。
Reverse<T>(T[])反转一维泛型数组中元素的顺序。
Reverse<T>(T[], Int32, Int32)反转一维泛型数组中元素子集的顺序。

2.Reverse(Array, Int32, Int32)

        它允许您反转数组中指定索引和长度的部分元素顺序。

public static void Reverse (Array array, int index, int length);

参数
array    Array
要反转的一维 Array。

index    Int32
要反转的部分的起始索引。

length    Int32
要反转的部分中的元素数。

例外
ArgumentNullException
array 为 null。

RankException
array 是多维的。

ArgumentOutOfRangeException
index 小于 array 的下限。
或 -
length 小于零。

ArgumentException
index 和 length 未在 array 中指定有效范围。

3. Reverse(Array)

        C#中可以使用Array.Reverse()方法来反转数组中的元素顺序。

public static void Reverse (Array array);

参数
array    Array
要反转的一维 Array。

例外
ArgumentNullException
array 为 null。

RankException
array 是多维的。

4.Reverse<T>(T[])

        Array.Reverse<T>(T[] array)Array类的泛型版本的Reverse()方法,它允许您反转泛型数组中的元素顺序。

public static void Reverse<T> (T[] array);

类型参数    
T
array 中的元素的类型。

参数
array    T[]
要反转的元素的一维数组。

例外
ArgumentNullException
array 为 null。

RankException
array 是多维的。

5. Reverse<T>(T[], Int32, Int32)

        Array.Reverse<T>(T[] array, int index, int length)是Array类的另一个版本的Reverse()方法,它允许您反转泛型数组中指定索引和长度的部分元素顺序。

public static void Reverse<T> (T[] array, int index, int length);

类型参数
T
array 中的元素的类型。

参数
array    T[]
要反转的元素的一维数组。

index    Int32
要反转的部分的起始索引。

length    Int32
要反转的部分中的元素数。

例外
ArgumentNullException
array 为 null。

RankException
array 是多维的。

ArgumentOutOfRangeException
index 小于 array 的下限。
或 -
length 小于零。

ArgumentException
index 和 length 未在 array 中指定有效范围。

二、实例

1.Array.Reverse 方法4种重载方法综合实例

//Array.Reverse 方法
namespace _105_1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            ArgumentNullException.ThrowIfNull(args);
            // Reverse(Array)
            int[] numbers1 = [1, 2, 3, 4, 5];
            Array.Reverse(numbers1);
            foreach (int number in numbers1)
            {
                Console.Write(number + " ");
            }
            Console.WriteLine();
            Console.WriteLine("***************");
            // Reverse(Array, Int32, Int32)
            int[] numbers2 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
            int index = 3;
            int length = 4;
            Array.Reverse(numbers2, index, length);
            foreach (int number in numbers2)
            {
                Console.Write(number + " ");
            }
            Console.WriteLine();
            Console.WriteLine("***************");
            // Array.Reverse<T>(T[] array)
            string[] names = ["Alice", "Bob", "Charlie", "David", "Eve"];
            //使用Array.Reverse<T>方法反向数组中的元素顺序
            Array.Reverse(names);
            foreach (string name in names)
            {
                Console.Write(name + " ");
            }
            Console.WriteLine();
            Console.WriteLine("***************");

            // Reverse<T>(T[], Int32, Int32)
            string[] words = { "hello", "world", "foo", "bar" };
            // 使用 Array.Reverse<T> 方法来反转数组中元素的顺序,从索引 1 开始,长度为 2
            Array.Reverse(words, 1, 2);
            foreach (string word in words)
            {
                Console.Write(word + " ");
            }
            Console.WriteLine();
            Console.WriteLine("***************");
        }
    }
}
//运行结果:
/*
5 4 3 2 1
***************
1 2 3 7 6 5 4 8 9
***************
Eve David Charlie Bob Alice
***************
hello foo world bar
***************

 */

2.Reverse(Array)方法的实例

// 用Reverse(Array)方法反转数组中元素
namespace _105
{
    public partial class Form1 : Form
    {
        private GroupBox? groupBox1;
        private GroupBox? groupBox2;
        private Button? button1;
        private Label? label1;
        private Label? label2;
        private string[]? str_array;//定义字符串数组字段

        public Form1()
        {
            InitializeComponent();
            StartPosition = FormStartPosition.CenterScreen;
            Load += Form1_Load;
        }

        private void Form1_Load(object? sender, EventArgs e)
        {
            // 
            // button1
            // 
            button1 = new Button
            {
                Location = new Point(99, 123),
                Name = "button1",
                Size = new Size(75, 23),
                TabIndex = 0,
                Text = "反转",
                UseVisualStyleBackColor = true
            };
            button1.Click += Button1_Click;
            // 
            // label1
            // 
            label1 = new Label
            {
                AutoSize = true,
                Location = new Point(48, 15),
                Name = "label1",
                Size = new Size(0, 17),
                TabIndex = 1
            };
            // 
            // label2
            // 
            label2 = new Label
            {
                AutoSize = true,
                Location = new Point(48, 15),
                Name = "label2",
                Size = new Size(0, 17),
                TabIndex = 2
            };
            // 
            // groupBox1
            // 
            groupBox1 = new GroupBox
            {
                Location = new Point(12, 12),
                Name = "groupBox1",
                Size = new Size(240, 105),
                TabIndex = 0,
                TabStop = false,
                Text = "反转前:"
            };    
            groupBox1.Controls.Add(label1);
            groupBox1.SuspendLayout();
            // 
            // groupBox2
            // 
            groupBox2 = new GroupBox
            {
                Location = new Point(12, 152),
                Name = "groupBox2",
                Size = new Size(240, 105),
                TabIndex = 0,
                TabStop = false,
                Text = "反转后:"
            };
            groupBox2.Controls.Add(label2);
            groupBox2.SuspendLayout();
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(264, 269);
            Controls.Add(button1);
            Controls.Add(groupBox2);
            Controls.Add(groupBox1);
            Name = "Form1";
            Text = "反转数组元素";
            groupBox1.ResumeLayout(false);
            groupBox1.PerformLayout();
            groupBox2.ResumeLayout(false);
            groupBox2.PerformLayout();

            str_array = ["C#编程词典", "C#编程宝典", "C#开发实战宝典", "视频学C#", "C#范例大全"];
            foreach (string str in str_array)
            {
                label1!.Text += str + Environment.NewLine;    
            }
        }

        private void Button1_Click(object? sender, EventArgs e)
        {
            label2!.Text = string.Empty;
            foreach (string str in str_array!.Reverse())//遍历反转后的字符串数组
            {
                label2.Text += str + Environment.NewLine;
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/379939.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android修改系统默认字体

文章目录 前言一、方案1、将定制的custom_fonts.xml配置文件编译到系统中2、将自定义的字体ttf文件编译到系统中3、在系统的编译mk中添加fonts.mk的引用4、修改系统代码,使得优先加载使用custom_fonts.xml前言 Android系统中的字体配置文件为/system/etc/fonts.xml 关于fonts…

JVM之GC垃圾回收

GC垃圾回收 如何判断对象可以回收 引用计数法 如果有对象引用计数加一&#xff0c;没有对象引用&#xff0c;计数减一&#xff0c;如果计数为零&#xff0c;则回收 但是如果存在循环引用&#xff0c;即A对象引用B对象&#xff0c;B对象引用A对象&#xff0c;会造成内存泄漏 可…

linux之wsl2安装远程桌面

0. 安装后的效果 1. wsl中打开terminal并安装库 sudo apt-get purge xrdp sudo apt install -y xrdp sudo apt install -y xfce4 sudo apt install -y xfce4-goodies 2.优化显示 sudo sed -i s/max_bpp32/#max_bpp32\nmax_bpp128/g /etc/xrdp/xrdp.ini sudo sed -i s/xserverbp…

听说有 Hugging Face 陪伴的春节,是这样的…

辞旧迎新春节到&#xff0c;家家户户好热闹。Hugging Face 中国团队成员祝各位社区成员们新春快乐&#xff0c;万事如意&#xff01; 过去的一年我们持续看到 AI 技术的腾飞和发展&#xff0c;以及诸多机构为开源 AI 作出巨大的贡献。非常感谢将模型、数据集和应用 Demo 发布在…

寒假作业:2024/2/8

作业1&#xff1a;现有文件test.c\test1.c\main.c,编写Makkefile Makefile代码&#xff1a; CCgcc EXEa.out OBJS$(patsubst %.c,%.o,$(wildcard *.c)) CFLAGS-c -oall:$(EXE)$(EXE):$(OBJS)$(CC) $^ -o $%.o:%.c$(CC) $(CFLAGS) $ $^.PHONY:cleanclean:rm $(OBJS) $(EXE)效果…

网络安全产品之认识准入控制系统

文章目录 一、什么是准入控制系统二、准入控制系统的主要功能1. 接入设备的身份认证2. 接入设备的安全性检查 三、准入控制系统的工作原理四、准入控制系统的特点五、准入控制系统的部署方式1. 网关模式2. 控制旁路模式 六、准入控制系统的应用场景七、企业如何利用准入控制系统…

CTF--Web安全--SQL注入之Post-Union注入

一、手动POST注入实现绕过 账号密码检测 我们利用sqli-labs/Less-11靶场来进行演示&#xff1a; 我们可以看到一个登录页面 打开Less-11的根目录&#xff0c;我们打开页面的源代码(PHP实现)。 用VS-code打开文件&#xff0c;找到验证登录信息的代码行。 此形式的代码存在POST…

【Linux】Linux开发工具(yum、gdb、git)详解

一、软件包管理器 yum 1、什么是软件包 在 Linux 下安装软件&#xff0c;通常的办法是下载到程序的源代码&#xff0c;并进行编译&#xff0c;得到可执行程序。但这样太麻烦了&#xff0c;于是有些人把一些常用的软件提前编译好&#xff0c;做成软件包&#xff08;可以理解成…

奋斗与诗意的三纲八目

人生得有一个基调、总的宗旨、指导思想、根据、根本。当人做出一个重大决定时&#xff0c;绝非偶然&#xff0c;一定是背后的宗旨在起作用。你每天起床的动力&#xff0c;是否能热情洋溢地做事&#xff0c;也是这个宗旨在起作用。念天地之悠悠独怆然而涕下&#xff0c;忧思难忘…

【数据结构】数据结构

本文是基于中国MOOC平台上&#xff0c;华中科技大学的《数据结构》课程和浙江大学的《数据结构》课程所作的一篇课程笔记&#xff0c;便于后期讲行系统性查阅和复习。 从个人感受而言&#xff0c;华中科技大学的课程讲解更适合初学者&#xff08;缺点在于&#xff0c;从概念到…

ruoyi若依框架SpringSecurity实现分析

系列文章 ruoyi若依框架学习笔记-01 ruoyi若依框架分页实现分析 ruoyi若依框架SpringSecurity实现分析 文章目录 系列文章前言具体分析一、项目中的SpringSecurity版本二、登录认证流程分析三、权限鉴定四、退出登录五、SpringSecurity配置类 总结 前言 在ruoyi-vue若依框…

基于Robei EDA--实现串口通信

一、串口简介 串口作为常用的三大低速总线&#xff08;UART、SPI、IIC&#xff09;之一&#xff0c;在设计众多通信接口和调试时占有重要地位。但UART和SPI、IIC不同的是&#xff0c;它是异步通信接口&#xff0c;异步通信中的接收方并不知道数据什么时候会到达&#xff0c;所…

Flink CDC 与 Kafka 集成:Snapshot 还是 Changelog?Upsert Kafka 还是 Kafka?

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧二维…

Go语言每日一练——链表篇(四)

传送门 牛客面试笔试必刷101题 ----------------合并两个排序的链表 题目以及解析 题目 解题代码及解析 package main import _"fmt" import . "nc_tools" /** type ListNode struct{* Val int* Next *ListNode* }*//*** 代码中的类名、方法名、参…

猫头虎分享已解决Bug || 未定义的变量(Undefined Variable):ReferenceError: x is not defined

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

我希望在VS2019中使用Qt的qzipreader_p.h

操作&#xff1a; 这里添加的是我的本地路径&#xff01;大家自行对照自己的安装位置&#xff01;

个体诊所门诊电子处方开单管理系统软件,配方模板病历模板设置一键导入操作教程

个体诊所门诊电子处方开单管理系统软件&#xff0c;配方模板病历模板设置一键导入操作教程 一、前言 以下操作教程以 佳易王诊所电子处方软件V17.2为例说明&#xff0c;最新版V17.3下载可以点击最下方官网卡片了解。 1、在现实生活中&#xff0c;医师开单可谓是争分夺秒&…

VSCode如何让先前打开的文件不被自动关闭,一直保持在标签栏里(关闭预览模式)

第一次接触VSCode-Huawei IDE编辑器&#xff0c;每次打开一个新的代码文件&#xff0c;旧的代码文件都会被自动关闭&#xff08;现在才知道是因为文件默认是以预览模式打开展示的&#xff09;。 那么如何才能让先前打开的文件一直保持在标签栏里呢&#xff1f; 我们需要去设置…

Apache Paimon 文件操作

本文旨在澄清不同文件操作对文件的影响。 本页面提供具体示例和实用技巧&#xff0c;以有效地管理这些操作。此外&#xff0c;通过对提交&#xff08;commit&#xff09;和压实&#xff08;compact&#xff09;等操作的深入探讨&#xff0c;我们旨在提供有关文件创建和更新的见…

Qt未来市场洞察

跨平台开发&#xff1a;Qt作为一种跨平台的开发框架&#xff0c;具有良好的适应性和灵活性&#xff0c;未来将继续受到广泛应用。随着多设备和多平台应用的增加&#xff0c;Qt的前景在跨平台开发领域将更加广阔。 物联网应用&#xff1a;由于Qt对嵌入式系统和物联网应用的良好支…
最新文章