(13)C#数组
如果需要使用同一类型的多个对象,数组是一种数据结构,它包含同一类型的多个元素
一、一维数组
1、数组的声明方法
int [] a;
因为数组是引用类型,引用类型有个特点是:声明变量时不会马上分配一个内存,只有在用new关键字创建实例的时候,才会分配内存。
2、创建一个数组实例
a=new int[];
栈里的变量a引用了托管堆上的4个整型值。
如果事先不知道数组中包含多少个元素,可以使用集合。
3、初始化数组变量
int[] a=new int[]{,,,};
右边的[]里如果写了数字,那数字必须与{}数字的个数相同。[]给出的是4个,{}里必须写入4个数据。
4、初始化数组简写
初始化一个数组时可以不写数字自由分配元素个数,或者更简单直接省略new和int[]。
int[] a = new int[] { , , };
int[] a={,,,};
5、创建隐式类型的数组
var name=new [] {"tom","jack","luxi","mi"};
两个语法上的特别地方:
1、等号左边省略的[]
2、右边必须是new[]{}的形式
3、{}里的数据必须是相同类型,否则编译器不判断类型导致报错。
6、访问数组元素
提取数组元素
int b=a[];
数组元素的下标是从0开始的,所以b的值是4.
给数组元素重新赋值
int b=; a[]=b;
二、多维数组
数组的维数没有限制,以二维数组举例
1、二维数组的声明
int[,] a;
2、二维数组创建实例
int [,] a=new int[,];
3、初始化
int [,] a= new int[,]{{,},{,},{,},{,}};
/*可以看做是一个4行2列的表,{5, 6}是第1行的数据,一共4行
5 6
7 2
9 3
5 4
*/
4、简写
int[,] a= new int[,] { { , },{ , },{ , },{5,4} };
int[,] a = {{ , },{ , },{ , },{5,4}};
5、访问数组元素
需要用两个坐标确定一个数的位置。
提取二维数组元素
int b = a[2, 1];
一定要记住只有new的时候[]里的数字表示的是行和列,其他地方a[2,1]这里的2和1是数组下标啊,是要从0开始算的。
对数组的某个元素重新赋值
a[,]=;
//这么写就把第三行第二列的值3变成了5
三、交错数组
交错数组也称之为数组的数组,
1、声明
int [][] a;
2、创建实例
int[][]a=new int[][];
这个数组里包含了3个数组,而且这3个数组的长度可以自由设置。
3、赋值
a[]=new int[] {,,,,}; a[]=new int[]{,}; a[]=new int[]{,,};
交错数组也可以包含二维的数组
例如
int[][,] a =new int[][,];
a[]=new int[,]{{,},{,}};
a[] = new int[,] { { , }, { , }, { , } };
a[] = new int[,] { { , } };
四、引用类型数组
有一个Person类
public class Person
{
public string a { get; set; }
public string b { get; set; }
public override string ToString()
{
return String.Format("{0} {1}",a,b);
}
}
声明Person数组
Person[] per = new Person[];
引用类型的数组必须在使用前为其分配内存,否则会抛出NullReferenceException异常.
per[] = new Person { a = "李毅", b = "周杰" };
per[] = new Person { a = "Tom", b = "Jack" };
也可以初始化赋值
Person[] per = {
new Person{ a = "李毅", b = "周杰" },
new Person{a = "Tom", b = "Jack" }
};
五、遍历数组
1、用for语句遍历数组
int [] a={2,9,5,8};
for(int x=0;x<a.Length;x++)
{
int b=a[x];
Console.WitreLine("b");
}
2、foreach遍历数组
foreach和for有一样的功能也能遍历数组,
int[] a={2,9,5,8};
foreach(int x in a)
{
Console.WriteLine(x);
}
3、for和foreach的对比
.foreach最大的优点就是能够在不知道数组下标的情况下遍历整个数组,代码可以写的简练些。其他的优势就没有for了
.for很灵活不仅可以能正着遍历还能倒着遍历以及还可以跳的遍历。
.如果循环的主题需要元素的下标,则需要用for
.如果需要修改数组元素,则必须用for,foreach修改会报错。
六、Ayyay类
七、数组作为参数
八、枚举
九、IEnumerator接口
十、元组
class Program
{
static void Main(string[] args)
{
//赋值元组
var b = ("tom", );
//调用元组
Console.WriteLine(b.Item1);//tom
Console.WriteLine(b.Item2);//23 //给元组元素定义名称
var c = (name: "liu", age: );
Console.WriteLine(c.age);//29
//虽然vs隐藏了Item1,但是还是可以用这种方式调用
Console.WriteLine(c.Item1); } //定义一个返回元组的函数
(string, int) stu()
{
return ("tom", );
}
}
十一、结构比较
十二、数组常用的属性方法
数组常用的属性
Length属性表示数组中元素的个数(包括多维数组的个数).
int b=a.Length; //b=8
数组常用的方法
1、
(13)C#数组的更多相关文章
- 剑指Offer 13. 调整数组顺序使奇数位于偶数前面 (数组)
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 题目地址 https ...
- 剑指Offer面试题:13.调整数组顺序使奇数位于偶数前面
一.题目:调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 例如有以下一个整数数组:12345 ...
- Java 13 - Java 数组
Java 数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如num ...
- [剑指Offer] 13.调整数组顺序使奇数位于偶数前面
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. [思路1]用2n ...
- 剑指 Offer——13. 调整数组顺序使奇数位于偶数前面
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变.这和书本不太一样. 解 ...
- 剑指 offer set 13 把数组排成最小的数
总结 1. 给定 3, 32, 321 将他们组合成最小的数, 比如 321323 2. 3 -> 333 32 -> 322 321 -> 321 然后再排序
- 13.调整数组顺序使奇数位于偶数前面 Java
思路 两次遍历,第一次把奇数加到list中,第二次把偶数加到list中,时间复杂度为O(n). 利用类似于插入排序的方法,但时间复杂度为O(n^2). 代码 import java.util.Arra ...
- [技术翻译]您应该知道的13个有用的JavaScript数组技巧
本次预计翻译三篇文章如下: 01.[译]9个可以让你在2020年成为前端专家的项目 02.[译]预加载响应式图像,从Chrome 73开始实现 03.[译]您应该知道的13个有用的JavaScript ...
- 13 个 JS 数组精简技巧
来自 https://juejin.im/post/5db62f1bf265da4d560906ab 侵删 数组是 JS 最常见的一种数据结构,咱们在开发中也经常用到,在这篇文章中,提供一些小技巧,帮 ...
随机推荐
- javaWEB简单商城项目
javaWEB简单商城项目(一) 项目中使用到了上一篇博文的分页框架,还有mybatis,重点是学习mybatis.现在有些小迷茫,不知道该干啥,唉,不想那么多了,学就对了 一.项目功能结构 1.功能 ...
- 架构师速成6.7-设计开发思路-uml 分类: 架构师速成 2015-07-29 18:25 157人阅读 评论(0) 收藏
uml是什么东西?统一建模语言,一门语言,是用来进行软件设计的一门语言. 其实一门语言的诞生并不伟大,让大多数人都使用才足够伟大.uml就是一门伟大的语言,因为目前软件设计的唯一语言就是它. UML其 ...
- == 与 equals 之区别
"=="和equals方法究竟有什么区别? (单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚) ==操作符专门用来比较两个变量的值 ...
- poj1273 网络流入门题 dinic算法解决,可作模板使用
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 62078 Accepted: 2384 ...
- nyoj 题目36 最长公共子序列
最长公共子序列 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个程序,得出最长公共子序列.tip:最长公共子序列也称作最 ...
- PHP实现图片上传并压缩
本文实例讲解了PHP图片上传并压缩的实现方法,分享给大家供大家参考,具体内容如下 使用到三个文件 connect.php:连接数据库 test_upload.php:执行SQL语句 upload_im ...
- [CTSC2017][bzoj4903] 吉夫特 [状压dp+Lucas定理]
题面 传送门 思路 一句话题意: 给出一个长度为 n 的序列,求所有长度大于等于2的子序列个数,满足:对于子序列中任意两个相邻的数 a和 b (b 在 a 前面),$C_a^b mod 2=1$,答案 ...
- 2017 多校4 Dirt Ratio
多校4 Dirt Ratio(二分+线段树) 题意: 给出n个数,找一段区间使得区间内不同数字个数除以区间长度最小,求这个最小值,\(n<=60000,a_i<=n\) 题解: 二分答案m ...
- bzoj1494【Noi2007】生成树计数
题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1494 sol :前排膜拜http://blog.csdn.net/qpswwww/artic ...
- hashCode()方法和equals方法的重要性。
在Object中有两个重要的方法:hashCode()和equals(Object obj)方法,并且当你按ctrl+alt+s时会有Generator hashCode()和equals().我们不 ...