C#拾遗之数组

学了C++语言的数组,再学习C#语言的数组,总会去想它们之间的区别,定义格式,书写形式,赋值形式都不同。相对于C++语言来说,C#语言提供的数组更有实用性,C#语言的数组在元素值不知道的情况下可以动态地实现赋值。

一维数组

一维数组的声明格式:

数据类型 [ ]   <数组名称>

对一维数组初始化有两种形式:

(1), int[] Array={1,2,3,4,5,6}

(2), int[] Array=new int[6] {1,2,3,4,5,6}

或int[] Array; Array=new int[6] {1,2,3,4,5,6}

例题:根据索引更改数组中的元素并输出更改后数组的所有元素

<span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] Array;
            Array = new int[6]{1,2,3,4,5,6};
            Console.WriteLine("Array的第二个元素:{0}",Array[1]);
            Array[1] = 7;
            Console.WriteLine("更改后的Array的第二个人元素:{0}",Array[1]);
            Console.WriteLine("以下是更改后的Array的所有元素");
            foreach (int temp in Array)
            {
                Console.WriteLine(temp);
            }
            Console.ReadLine();
        }
    }
}</span>

输出的结果很清楚的知道为:Array的第二个元素:2

更改后的Array的第二个人元素:7

以下是更改后的Array的所有元素  1 7 3 4 5 6(每一行一个元素的输出)

二维数组

二维数组的声明格式为:

数据类型 [ , ]  <数组名称>

对二维数组进行初始化的两种形式:

(1),int[,] Array={(1,2),(3,4),(5,6)}hu

(2),int[,] Array=new int[3,2] {(1,2),(3,4),(5,6)}

    或int[,] Array;Array=new int[3,2] {(1,2),(3,4),(5,6)}

例题,根据索引更改数组中的元素并输出更改后数组后的元素

<span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[,] Array;
            Array=new int[3,2]{{1,2},{3,4},{5,6}};
            Console.WriteLine("更改前Array的数组元素为:");
            foreach (int temp in Array)
            {
                Console.WriteLine(temp);
            }
            Array[1, 0] = 7;
            Array[1, 1] = 8;
            Console.WriteLine("更改后Array的数组元素为:");
            foreach (int item in Array)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
        }
    }
}</span>

输出的结果很简单为:更改前Array的数组元素为:1 2 3 4 5 6

更改后Array的数组元素为:1 2 7 8 5 6(每一行一个元素的输出)

数组排序

Array提供了Sort方法来进行排序,但它常与Reverse方法(反转数组中元素的顺序)一起配合使用。

Sort方法,接受一个数组,将其实现升序,格式为:Array.Sort(数组)

Reverse方法,接受一个数组,将其反转数组中元素的顺序,格式为:Array.Reverse(数组)

例题,对下面的数组进行升序然后再进行降序

<span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] b;
            b=new int[6]{2,1,4,5,3,6};
            Array.Sort(b);
            Console.WriteLine("升序排列:");
            foreach (int temp in b)
            {
                Console.WriteLine(temp);
            }
            Array.Reverse(b);
            Console.WriteLine("降序排列:");
            foreach (int item in b)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
        }
    }
}</span>

输出结果很简单为:升序排列:1 2 3 4 5 6

降序排列:6 5 4 3 2 1(每一行输出一个元素)

数组合并与拆分

Array提供了Copy方法实现数组的合并与拆分。Copy方法有四个重载,分别为:

(1)Array.Copy(数组1,数组2,长度)Int32

(2)Array.Copy(数组1,数组2,长度)Int64

(3)Array.Copy(数组1,指定索引,数组2,指定索引,长度)Int32

(4)Array.Copy(数组1,指定索引,数组2,指定索引,长度)Int64

例题,实现合并数组1和数组2为数组3,将数组2拆分给数组4

<span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] arr1 = {1,2,3,4};
            int[] arr2 = {5,6,7,8,9};
            int[] arr3=new int[9];
            int[] arr4=new int[3];//取数组2中的前三个元素
            Array.Copy(arr1, 0, arr3, 0, 4);//合并数组1到数组3
            Array.Copy(arr2, 0, arr3, 4, 5);//合并数组2到数组3
            Array.Copy(arr2, 0, arr4, 0, 3);//拆分数组2前三个元素到数组4
            Console.WriteLine("合并为数组3的元素为:");
            foreach (int temp in arr3)
            {
                Console.WriteLine(temp);
            }
            Console.WriteLine("拆分为数组4的元素为:");
            foreach (int item in arr4)
            {
                Console.WriteLine(item);
            }
            Console.ReadLine();
        }
    }
}</span>

输出的结果为:合并为数组3的元素为:1 2 3 4 5 6 7 8 9

拆分为数组4的元素为:5 6 7

时间: 2024-07-29 06:00:48

C#拾遗之数组的相关文章

个人拾遗!数组的拷贝等

今天做一个c#,用到一个图表控件,可惜里面的很多值坐标是用object数组,声明时没有加长度, 结果声明了一个数组,用Array.CopyTo方法,结果老是提示数组索引超过下标. 默认声明的没有加长度的数组,只有一个长度的空间,也就更这时在内存里面分配的时候,只会分配一个类型长度.具体多大不知道,可能是字节吧. 然后先用arraylist声明用add添加之后,再声明object为array的长度即可!

C/C++拾遗(一):关于数组的指针和数组元素首地址的一道经典题

代码如下: #include <stdio.h> int main(void) { int a[5] = {1, 2, 3, 4, 5}; int *ptr = (int *)(&a+1); int *p1 = a; int *p2 = &a[0]; int *p3 = (int *)(&a); if(p1 == p2){ printf("p1 == p2\n"); }else{ printf("p1 != p2\n"); } i

Java基础拾遗——数组与对象的拷贝

一.数组的拷贝主要有以下几种方式. 1.Object.clone() 该方法继承自Object类,数组元素为基础数据类型(boolean.char.byte.short.int.float.double.long)或String类型,均可使用. int[]  arr1 = {1,2,3}; int[]  arr2 = arr1.clone(); //arr2={1,2,3} String[] arr1 = {"a", "b"}; String[] arr2 = ar

C++拾遗--引用

C++拾遗--引用 前言 引用就是别名(alias).所谓别名,就是对已存在的对象另起一个名字.本身含义并不难理解,但与其它概念一组合,就成了使用难点.再加上新标准提出了新的一种引用-右值引用,引用这一概念就变得更加难以理解和使用. 正文 随着新标准(新标准往往就是新的技术)的提出,引用这一概念分成两类:左值引用.右值引用.其中左值引用是最常用的一种,而右值引用则是语言使用上的一种革新. 1.左值引用 左值引用的基本语法 Type &引用名 = 左值表达式; #include <iostre

C++拾遗--new delete 重载

C++拾遗--new delete 重载 前言 new和delete是操作动态内存的一对操作.对它们重载可以对内存管理进行有效的定制. 正文 1.局部重载 特别针对某一类型,对new和delete进行重载,可以对该类型对象的动态创建实行监控.如下代码: 代码一 #include <iostream> using namespace std; class MyClass { public: MyClass() { cout << "MyClass()" <&

php拾遗: 类型约束

突然间什么都不想干,感觉就像来大姨夫一样..但是又不能断了每个工作日都写博客的习惯..所以今天水一下吧. PHP用了快2年了,但是这东西竟然第一次看到,突然间,觉得自己有掉回战五渣的行列了.翻开官方文档<类型约束>里面讲的非常清楚了.总共就四种:类名,接口,数组,callable (PHP 5.4起)那些啥 int string 都不行..例子什么的 PHP 手册上已经讲的非常详细了,我也懒的写了,反正这东西就一个知识点,看一下就会了.. 其实,好久没写PHP,现在回头读读各大框架,真怀疑自己

Java拾遗(2)

面向对象的三个主要特征: 行为——可以对对象施加哪些操作,或可以对对象施加哪些方法 状态——当施加那些方式时,对象如何响应 标识——如何辨别具有相同行为与状态的不同对象 作为一个类,每个对象的标识永远是不同的,状态常常也存在着差异 类之间的关系: 依赖("is-a"):一个类的方法操纵另一个类的对象 (尽量减少依赖) 聚合("has-a"):类A的对象包含类B的对象 继承("is-a"):特殊与一般:一般而言,类A扩展类B,类A不但包含从类B继承

数组、集合与泛化

从VB.C#到VB.net,在变量的使用中总少不了数组的影子,它不仅可以快速而容易地从头到尾遍历元素,还可以快速的修改元素.但是用的多了自然就发现了的它的缺点,当两个元素之间添加元素时就比较困难了,因为在创建时事先指定了数组变量的大小使用时又不能随意增改,再加上链表.堆.栈等需求的增加,数组已经显得力不从心了,由此发展出了集合,即传说中的动态数组,它是.NET Framework提供的用于数据存储和检索的专用类,这些类提供了对堆栈.队列.列表和哈希表的支持. 但是集合都依赖于Object基类,使

C++拾遗--多线程:多线程的引入

C++拾遗--多线程:多线程的引入 前言 多线程是编程中的一个重要内容.多核时代使多线程称为一种可能,显然,一件事情多个人干,效率一定会提升.下面来看下C语言中是如何使用多线程的. 正文 先来看一个实例 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <process.h> #include <Windows.h> DWORD WINAPI run