初学者入门web前端 C#基础知识:数组与集合
对于初学者,想要入门web前端,要有足够的信念和坚持,不然只会越走越远,我现在就深深的体会到。
我本是一个很拒绝代码的人,以前想过UI设计,但是在这段学习时间里,发现其实只要认真,代码并不是很难
所以我整理了一套前期学C#的知识点,对于后期学习JavaScript有很大的帮助。
一、数组与集合
数组:能存放任意多个同类型的数据
数据项:类型相同
①每一个数据型都有一个编号(索引或下标)
②数据的索引(下标)是一个int类型的数字
③从0开始,依次为数据中每一个数组项编号
数组的声明与赋值
声明:数据类型[ ] 变量名;
赋值:变量名 = new 数据类型[长度](长度为int类型)
数据型的读取与修改:读取:变量名[索引]
修改 :变量名[索引] = 值;
读取数组的长度 变量名.Length 返回类型为int
合并书写:数据类型[ ] 变量名 = new 数据类型[长度];
(数组的声明与赋值, 数据型的读取与修改, 读取数组的长度)
数组项的默认值:一个数组创建后,它每一个数组项的值为数组项类型的默认值。
常见默认值:数字类型 默认值为0
bool类型 默认值为false
char类型 默认值为\0
string类型 默认值为mull(表示没有任何数据)
示例
创建一个长度为3的字符串数组,然后依次为它的每一项赋值为a、b、c、,最后,输出该数组的长度
合并书写
string[ ] strs = new string[3];
strs[0] = "a";
strs[1] = "b";
strs[2] = "c"; sring[ ] strs = {"a","b","c"};
Console.Write(strs.Length); Console.Write(strs.Length);
int[ ] numbers = new int[5];
numbers[0] = 3;
numbers[1] = -2;
numbers[2] = numbers[0] * 2 + numbers[1];
Console.WriteLine(numbers[3]);
Console.WriteLine(numbers.Length); 控制台输出4,5
二、数组的定长性
一个数组创建后,它的长度固定不变
int[ ]nums = new int[5];
nums = new int [6]; 不再使用上一个数组,重新建立一个长度为5的数组
数组适用于数据数量固定的场景
适合使用数组的场景:保存100以内的所有质数
保存太阳系中所有已知行星的质量
保存标准扑克中的所有牌面数据
保存一个星期的所有日期
其他定长的数据场景
不适合使用数组的场景:保存一个班学生信息
保存一年中的所有日期
保存斗地主游戏中某玩家的手牌数据
保存游戏某玩家的装备信息
其他不定长的数据场景
三、数组的遍历
重复行为:输出一个数组项
代码书写格式:Console.WriteLine(arrays [?]);其中?为索引
int i = ?;
变量i的变化范围:0~arrays,Length-1 也可以写成:i < arrays.Length
遍历
定义:是指从数组的第一项开始,依次取完整数组所有项
①实现数组的遍历,可以使用循环
②循环变量从0开始,依次取到数组的最大下标(数组的长度-1)
③在循环体中,使用循环体变量作为下标,即可取出数组每一项的值
for (int i = 0; i < arrays.Length; i++)
{
Console.WriteLine(arrays[i]);
}
完整实现代码
Console.Write("亲输入数组的长度:");
int len = int,Parse(Conesole,ReadLine());
//根据用户的输入创建数组,并遍历数组为其每一项赋值
int[ ] nums = ; i < nums.Length; i++
{
Console,Write("请输入数组第"+ (i + ) + "项的值:");
nums[i] = int.Parse(Console.ReadLine());
}
//遍历数组nums,依次输出数组中的值
Console.Write("数组的所有项是:");
for (int i = ; i < nums.Length; i++)
{
Console.Write(nums[i]);
if (i < nums.Length - )//不是最后一项
Console.Write(",");//输出一个逗号分隔
四、交换排序
根据输入的数进行顺序排序:简化排序:如何把最小的数字,放置到数组索引未0的位置
实现方法:把第一个位置的数字拿出来依次和后面位置的数字进行比较,如果比后面位置数字大,则交换位置
全部代码实现
for (int i = ; i < numbers.Count - ; i++)
{
for (int j = i + ; j < numbers.Count; j++)
{
if(numbers [i]>numbers [j])
{
int temp = numbers[i];
numbers[i] = numbers [j];
numbers[j] = temp;
}
}
}
五、数组分析器
代码示例:
Console.Write("请输入数组的长度:");
int n = int.Parse(Console.ReadLine());
int[] nums = new int[n];
{
for (int i = ; i < nums.Length; i++)
{
Console.Write("请输入数组的第" + (i + ) + "项:");
nums[i] = int.Parse(Console.ReadLine());
}
Console.Clear();
}
for (int i = ; i < nums.Length - ; i++)
{
for (int j = i + ; j < nums.Length; j++)
if (nums[i] > nums[j])
{
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
Console.Write("你输入的数字从小到大的排序是:");
for (int i = ; i < nums.Length; i++)
{
Console.Write(nums[i] + " ");
}
Console.ReadLine();
{
Console.Write("你输入的数字其中是奇数的是:");
for (int i = ; i < nums.Length; i++)
if (nums[i] % != )
{
{
Console.Write(nums[i] + " ");
}
}
Console.ReadLine();
}
Console.Write("你输入的数其中是质数的是:");
for (int i = ; i < nums.Length; i++)
{
bool isFind = false;
for (int j = ; j < nums[i]; j++)
{
if (nums[i] % j == )
{
isFind = true;
break;
}
}
if (isFind)
{
}
else
{
Console.Write(nums[i] + " ");
}
}
Console.ReadLine();
六、集合
数据:定长(用于保存固定数量的数据)占内存少 遍历速度快
集合:不定长(保存的数据数量,可以在程序的执行过程中,不断的发生变化) 占内存多 遍历速度慢
List集合
创建:定义:List<数据类型> 变量名;
赋值:变量名 = new List<数据类型>(); //集合是不定长的所以赋值是无需指定长度,赋值后长度可以变化
初始化器:变量名 = new List<数据类型>{元素1,元素2,···,元素n,};
操作
1.添加元素:变量名.Add(要添加的数据);
List<int> nums = new List<int> {3,5,7};
nums.Add(1);
nums.Add(3);
2.插入元素:向集合的指定位置插入一个新的元素
变量名.Insert(索引,要插入的数据);
List<int> nums = neew List<int> {3,5.7};
nums.Insert(1,10);
3.删除元素:变量名.RemoveAT(索引);删除指定索引位置的元素
变量名.Remove(数据);
删除集合中与填写的数据相同的第一个匹配项
List<int> nums = new List<int> {1,1,2,3,5};
nums.RemoveAt(2);
nums.Remove(1);
4.修改元素:修改元素中某一个值
变量名[索引] = 值;
代码实现
int maxIndex = numbers.Count - ;
Console.Write("请您输入一个要删除的下标(0-"+maxIndex +")");
int index = int.Parse(Console.ReadLine());
if (index < || index > maxIndex)
{
Console.WriteLine("呀!你输入有误,下标超出范围了,按回车键继续");
Console.ReadLine();
}
else
{
Console.WriteLine("请你重新输入一个新的数字");
int newNum = int.Parse(Console.ReadLine());
numbers[index] = newNum;
}
5.获取元素数量:集合的长度 变量名.Count
总结:在功能上,数组能实现的所有功能集合都能实现反之,集合能实现的某些功能,数据难以实现(数据, 集合, List集合)
c#的集合类型
List Queue Stack LinkedList HashSet 其他
七、foreach循环
代码格式
foreach(数据类型) 变量 in 数组或集合)
{
循环体
}
从数组或集合中,依次取出每一项的数据没取出一项数据,酒吧数据赋值个循环变量每一次赋值后,运行一次循环体
代码示例
foreach循环现实:效率高
foreach (int item in numbers)
{
Console.WriteLine(item);
}
for循环现实:效率低
for ( int i = 1; i < numbers.Length; i++)
{
Console.WriteLine(numbers[i]);
}
foreach和for的对比
foreach:只用于遍历,不能更改循环目标,遍历速度快,执行效率高
for:可以用于任何形式的重复行为,在循环体重,可以进行任何操作,遍历速度慢,执行效率低
如需要遍历和组合,并且遍历的过程中只需要读取而不会更改,使用foreach循环最合适,反之,则根据需要,选择其他循环(foreach, for)
八、集合管理器
代码:
ite(item + "\t");
}
Console.WriteLine(); } Console.WriteLine("*********************************************************");
Console.WriteLine("1.添加数据");
Console.WriteLine("2.删除数据");
Console.WriteLine("3.修改数据");
Console.WriteLine("4.升序排序");
Console.WriteLine("5.退出程序");
Console.WriteLine();
Console.Write("\t" + "请您老选择一个序号(1-5):");
string input = Console.ReadLine(); if (input == "") {
break;
}
else if (input == "")
{
Console.Write("请输入要添加的数字:");
int num = int.Parse(Console.ReadLine());
numbers.Add(num);
}
else if (input == "")
{
Console.Write("请你输入要删除的数字:");
int num = int.Parse(Console.ReadLine());
numbers.Remove(num);
}
else if (input == "")
{
if (numbers.Count == )
{
Console.Write("集合中没有要修改的元素哦?按回车键擦亮眼睛重新选择");
Console.ReadLine(); }
else
{
int maxIndex = numbers.Count - ;
Console.Write("请您输入一个要删除的下标(0-"+maxIndex +")");
int index = int.Parse(Console.ReadLine());
if (index < || index > maxIndex)
{
Console.WriteLine("呀!你输入有误,下标超出范围了,按回车键继续");
Console.ReadLine();
}
else
{
Console.WriteLine("请你重新输入一个新的数字");
int newNum = int.Parse(Console.ReadLine());
numbers[index] = newNum;
}
}
}
else if (input == "")
{ for (int i = ; i < numbers.Count - ; i++)
{
for (int j = i + ; j < numbers.Count; j++)
{
if(numbers [i]>numbers [j])
{
int temp = numbers[i];
numbers[i] = numbers [j];
numbers[j] = temp;
}
}
}
}
else
{
}
Console.Clear();
}
时刻鼓励自己:
埋头读书,抬头做人!
不登高山不知天之高也,不临深溪不知地之厚也
懦弱的人只会裹足不前,莽撞的人只能引为烧身,只有真正勇敢的人才能所向披靡
我们这个世界,从不会给一个伤心的落伍者颁发奖牌。
海浪的品格,就是无数次被礁石击碎又无数闪地扑向礁石、
鞋底磨穿了,不等于路走到了头。
松驰的琴弦,永远奏不出时代的强音。
躺在被窝里的人,并不感到太阳的温暖。
不安于现状,不甘于平庸,就可能在勇于进取的奋斗中奏响人生壮美的乐间。
不去耕耘,不去播种,再肥的沃土也长不出庄稼,不去奋斗,不去创造,再美的青春也结不出硕果。
初学者入门web前端 C#基础知识:数组与集合的更多相关文章
- Web前端之基础知识
学习web前端开发基础技术须要掌握:HTML.CSS.Javascript 1.HTML是网页内容的载体 内容就是网页制作者放在页面上想要让用户浏览的信息,能够包括文字.图片.视频等. 2.CSS样式 ...
- 初学者入门web前端:C#基础知识:函数
入行前端对函数的掌握程度有可能直接影响以后工作的效率,使用函数可以高效的编写编码,节省时间,所以我整理了C#中最基础的函数知识点,虽然我在学习中 遇到很多问题,但是只要能够解决这些问题,都是好的. 一 ...
- web前端学习基础知识(1)
下载Atom插件和主题安装和配置 1.官网 https://atom.io/ 2.百度网盘上http://pan.baidu.com/s/1ntszCgT 安装subline以及插件的安装,再去了解它 ...
- 网络统计学与web前端开发基础技术
网络统计学与web前端开发基础技术 学习web前端开发基础技术(网页设计)需要了解:HTML.CSS.JavaScript三种语言.下面我们就来了解一下这三门技术在网页设计中的用途: HTML是网页内 ...
- Web前端-JavaScript基础教程上
Web前端-JavaScript基础教程 将放入菜单栏中,便于阅读! JavaScript是web前端开发的编程语言,大多数网站都使用到了JavaScript,所以我们要进行学习,JavaScript ...
- web前端project师知识汇总
分类: Web开发应用 一.何为Web前端project师? 前端project师,也叫Web前端开发project师.他是随着web发展.细分出来的行业.Web前端开发proj ...
- Web前端开发基础 第一天(Html和CSS)
学习web前端开发基础技术需要掌握:HTML.CSS.JavaScript语言.下面我们就来了解下这三门技术都是用来实现什么的: 1. HTML是网页内容的载体.内容就是网页制作者放在页面上想要让用户 ...
- 、web前端的这么知识应该是怎样的一个知识体系架构?
.web前端的这么知识应该是怎样的一个知识体系架构?之前我以为可以以W3C为纲要,把W3C的东西学会了就够了.后来发现我错了,W3C还不全面. 真正全面的覆盖了web前端知识体系的东西是——浏览器内核 ...
- Web前端-Ajax基础技术(下)
Web前端-Ajax基础技术(下) 你要明白ajax是什么,怎么使用? ajax,web程序是将信息放入公共的服务器,让所有网络用户可以通过浏览器进行访问. 浏览器发送请求,获取服务器的数据: 地址栏 ...
随机推荐
- WAS 部署 Birt 报表出现 error.CannotStartupOSGIPlatform 和 更新web.xml
在WAS7.0中部署Birt报表会出现error.CannotStartupOSGIPlatform错误,通常需要这样修改 1.依次打开Applications->WebSphere enter ...
- Jmeter之app性能测试(ios,android)
测试小菜鸟alter今天一大早又学习了一点东西关于jmeter-app性能测试,现在记录一下.提到性能测试,那我就简单总结一下.(想跳过的,直接将页面下移到下一个红色字体处) 性能测试的相关知识介绍 ...
- Verilog 任意(奇数/偶数)分频器
参加过一次笔试,让实现3分频,楼主当时是懵逼的,脑子里只知道同时利用上升沿和下降沿,本来写对了,慌张面试,脑子不管用了,(因为是手写,只能用脑子仿真)后来又给改错了,捂脸... 还是逻辑不清晰,现在自 ...
- 我的"Hello World!"之旅
不知从何谈起,回想起三年前的自己,那会是高三:同时也是一个让无数骚年悸动的年代,那时候的我也在一个叫做“召唤师峡谷”神奇的地方闯荡了两年.那么,记忆又会回到2012年的元旦,伴随着几个好友,偷偷摸摸地 ...
- Android中的广播
Android中的广播 广播接受器,可以比喻成收音机.而广播则可以看成电台. Android系统内部相当于已经有一个电台 定义了好多的广播事件,比如外拨电话 短信到来 sd卡状态 电池电量变化... ...
- Shopex如何清理缓存
一.进入后台,点击 右上角 的"关于" 二.点击:缓存系统: 三.点击"清空缓存" 四.清除成功!
- 用Python做大批量请求发送
大批量请求发送需要考虑的几个因素: 1. 服务器承载能力(网络带宽/硬件配置); 2. 客户端IO情况, 客户端带宽, 硬件配置; 方案: 1. 方案都是相对的; 2. 因为这里我的情况是客户机只有一 ...
- 小兴趣:用python生成excel格式座位表
脚本分两个文件: 1.生成二维随机列表:GenerateLocaltion.py 2.将列表导入excel文件:CreateExcel.py 先上GenerateLocaltion.py: impor ...
- C语言初探
1.C语言在屏幕上显示内容 我们有两种方式从计算机获得信息:一是看屏幕上的文字.图片.视频等,二是听从喇叭发出来的声音. 让喇叭发出声音目前还比较麻烦,我们先来看看如何在屏幕上显示一些文字吧.例如 ...
- 从FMDB到WCDB、微信团队怎么说?
WCDB背景 自己初次见到WCDB是微信开发团队公众号在今年五月份推送的一篇文章中(开发者团队的微信号上面图片中有,值得大家关注一下),那时候就说在筹备着WCDB的开源,觉得很是新奇,在两个多月前WC ...