1.foreach[对一些数组或集合进行遍历]

foreach(类型 变量名 in 集合对象){语句体}

  1. //定义一个数组
  2. int [] sNum1={,,,,, };
  3. foreach(var i in sNum1)
  4. {
  5. Console.WriteLine(i);
  6. }

foreach

for循环

  1. int[] str1 = {,,,,, };
  2. //for循环遍历
  3. for (int i=;i<str1.length;i++)
  4. {
  5. Console.WriteLine(str1[i]);
  6. }

for循环遍历

2.异常

1)异常和错误的区别:

错误:语法错误根本没有编译成功

异常:在程序运行过程中产生使程序终止正常运行的事件,编译成功,运行的时候出了问题

2)为什么要写异常?假如web.config里面的用户名和密码要与数据库交互,如果用户名或密码写错,它就会将后台代码展示到了网页上,一是不安全,二是不美观

eg:

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. int[] iNum1 ={, , , , , };
  6. //数组越界
  7. Console.WriteLine(iNum1[]);
  8. }
  9. }

数组越界异常

3)我们怎么写异常处理

  1. try
  2. {
  3. 要发生异常的代码
  4. }
  5. catch(异常类型,异常对象名)
  6. {
  7. 处理的代码
  8. }
  9. finaly //可选
  10. {
  11. 无论是否发生异常,都要执行的代码
  12. }

异常

return是跳出方法体的意思,这边它的执行顺序是:

执行try里面可能发生异常的地方,如果发生异常,执行catch里面的语句,反之,从上而下执行再执行return。finally不管有没有return都会执行。finally在return之前执行。

3.数组

数组和集合都是用来存放数据的,存放数据的用处

假如我们要做一个列表,这么多课程,首先是在数据库里面的得到它的列表,然后对这个列表进行循环,然后才把循环的结果显示到页面里面

ⅰ.一维数组

声明一个一维数组:int [] iNum1={1,2,3};//常用

int [] iNum1=new int[3];a[0]=1;a[1]=2; //声明一个长度为3的数组,指定第一个数为1,第二个数为2

int [] iNum1=new int[3]{1,2,3};//[3]可以省去

ⅱ.二维数组

定义一个二维数组:int [,]a={{1,2},{2,3},{3,4}};

int [,]a=new int[3,2];a[0,0]=1;//a的一行一列为1

int [,]a=new int[3,2]{{1,1},{1,1},{1,1}};//[3,2]不能省

  1. int[] iNum1 = { ,,,,,};
  2. Console.WriteLine("数组的长度为:"+iNum1.Length);

打印数组长度

4.集合

比数组更加强大的东西,假如我们要对一组数组里面的元素进行删除,数组做不到,这是我们就可以使用ArrayList

使用ArrayList,HashTable等都要加上命名空间"using System.Collections;"

Ⅰ.ArrayList操作

它的用法,我们可以看一下它的代码

  1. int[] iNum1 = { ,,,,,};
  2. //创建一个ArrayList对象
  3. ArrayList aList = new ArrayList();
  4. //把数组里面的东西加到alist里面去,对数组进行foreach循环
  5. foreach(var a in iNum1)
  6. {
  7. aList.Add(a);//将a添加到alist中
  8. }
  9. aList.RemoveAt();//删除它所对应的索引
  10. aList.Add();//在alist数组的末尾添加一个0
  11. aList.Insert(,);//在索引为1的位置处添加一个20
  12. //aList.Clear();//清除所有的现有元素
  13. //加进去之后再对它进行遍历
  14. foreach(var a in aList)
  15. {
  16. Console.WriteLine(a);
  17. }

ArrayList

ArraylList尽管对集合里面的内容很强大,但是它有一个弊端:

它添加的类型是object类型[任何一中类型的父类],object是引用类型,上面传的是值类型,值类型转为引用类型,这个过程叫着装箱,在程序中,我们要尽量避免装箱操作,如果是大数据,100w+条数据,        它每个都装箱一次,那它会有多大啊损耗。

ArrayList的用法看情况,比如一个集合里面,它要存一个字符串,int类型,数组,bool类型

  1. ArrayList aList = new ArrayList();
  2. aList.Add("abc");//存字符串
  3. aList.Add(); //存int
  4. aList.Add(iNum1);//存数组
  5. aList.Add(true);//存bool类型

ArrayList

Ⅱ .为了避免装箱操作,引用了它的泛型形式把它改为:List <int> aList=new List<int>();

注:<int>只是它的一种泛型形式[对数据类型进行约束],表示这个集合只能存int类型

这时候就变成了值类型,就不会存在装箱操作,效益更高。

它也可以存任何数据类型的集合:

  1. List<object> aList = new List<object>();
  2. aList.Add("abc");//存字符串
  3. aList.Add(); //存int
  4. aList.Add(iNum1);//存数组
  5. aList.Add(true);//存bool类型

List存任何类型

1).public int UserId;与public int UserId{get;set;}的区别

ⅰ.public int UserId是字段

ⅱ.public int UserId{get;set;}//属性,get是读,set写。全写出来是这样的

  1. public int UserId
  2. {
  3. get{return UserId;}
  4. set{UserId=value;}
  5. }

写法等同于

属性更加灵活,可以控制它的读和写,i字段只是一个简单的变量,不能控制读和写

eg:我们新建一个UserInfor类,program里面调用

  1. class UserInfor
  2. {
  3. public int UserId {get; set;}
  4. public string UserName {get;set;}
  5. public string Pwd { get; set; }
  6. public int Qq { get; set; }
  7. }

get和set

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. //得到一个集合
  6. List<UserInfor> list = new List<UserInfor>()
  7. {
  8. //先得到它的对象
  9. new UserInfor(){UserId=,UserName="zhangsan",Pwd="zhangsan123",Qq=},
  10. new UserInfor(){UserId=,UserName="lisi",Pwd="lisi123",Qq=},
  11. new UserInfor(){UserId=,UserName="wang",Pwd="wang123",Qq=},
  12. new UserInfor(){UserId=,UserName="zhaoqian",Pwd="zhaoqian123",Qq=},
  13. new UserInfor(){UserId=,UserName="sunli",Pwd="sunli123",Qq=}
  14. };
  15. //遍历集合user表示上面每一个对象
  16. foreach(var user in list)
  17. {
  18. Console.WriteLine(string.Format("用户名是:{0},密码是:{1}", user.UserName, user.Pwd));
  19. }
  20. }

取出它的字段,拼凑成字符串,显示

.hashtable

1.我们为什么要用hashTable?

在List<>,ArrayList,数组中,假设我们要对alist[3]-->4这个值,进行删除,然后又添加,又删除,找这个4。

那大数据100w+,用循环遍历循环10w次?这些都不可取,操作起来不方便,我们要对一个数组进行非常频繁的操作,那这时候我们就用到了hashtable。

2.hashTable是怎样的存储方式?

一个key,一个value.以上图中,1这个值得key就是key1,1就是它的value,2这个值得key就是key2,value就是2,每个value对应一个key,即使内容顺序打乱也没关系,我们可以通过key去查找,所以就算对集     合里面的内容进行多频繁的操作,我们只要知道这个key就可以通过key去查找,就可以知道里面的value。

3.hashTable操作:

  1. Hashtable ht = new Hashtable();
  2. ht.Add("key1", "aa");
  3. ht.Add("key2", "bb");
  4. ht.Add("key3", "cc");
  5. ht.Add("key4", "dd");
  6. ht.Add("key5", "ee");
  7. foreach (var key in ht.Keys)//ht.Keys找到ht里面的所有key
  8. {
  9. Console.WriteLine(ht[key]);//通过key去找value
  10. }

Hashtable例子

hashTable没有插入,因为它不是通过位置去添加的。

Ⅳ.hashTable泛型形式

hashTable中,它也是object类型,object类型就存在装箱,拆箱的问题

hashTable的泛型形式,

Dictionary<string,int> ht=new Dictionary<string,int>();//实例化一个对象,<string,int> 里面必须是string,int

1.hashTable泛型形式操作,遍历

  1. Dictionary<string, int> ht = new Dictionary<string, int>();
  2. ht.Add("key1", );
  3. ht.Add("key2", );
  4. ht.Add("key3", );
  5. ht.Add("key4", );
  6. foreach (var key in ht.Keys)//ht.Keys找到ht里面的所有key
  7. {
  8. Console.WriteLine(ht[key]);//通过key去找value
  9. }

hashTable操作

c#重点[集合类型]异常,数组,集合ArrayList,List<>,hashTable,hashtable泛型(Dictionary)的更多相关文章

  1. [转] Scala 的集合类型与数组操作

    [From] https://blog.csdn.net/gongxifacai_believe/article/details/81916659 版权声明:本文为博主原创文章,转载请注明出处. ht ...

  2. 【Swift学习】Swift编程之旅---集合类型之数组(六)

    swift提供了3种主要的集合类型,array,set,dictionary.本节介绍array. 数组是存储有序的相同类型的集合,相同的值可以多次出现在不同的位置. 注意: swift的Array类 ...

  3. [Swift]遍历集合类型(数组、集合和字典)

    Swift提供了三种主要的集合类型,称为数组,集合和字典,用于存储值集合. 数组是有序的值集合. 集是唯一值的无序集合. 字典是键值关联的无序集合. Swift中无法再使用传统形式的for循环. // ...

  4. Python中的集合类型分类和集合类型操作符解析

    集合类型    数学上,把set称作由不同的元素组成的集合,集合(set)的成员通常被称作集合元素(set elements).    Python把这个概念引入到它的集合类型对象里.集合对象是一组无 ...

  5. (转载)Java里新建数组及ArrayList java不允许泛型数组

    java中新建数组: String[] s;//定义的时候不需要设置大小 s = new String[5];//为数组分配空间时就要设置大小   对于ArrayList, ArrayList< ...

  6. Guava集合--新集合类型

    Guava引入了很多JDK没有的.但我们发现明显有用的新集合类型.这些新类型是为了和JDK集合框架共存,而没有往JDK集合抽象中硬塞其他概念.作为一般规则,Guava集合非常精准地遵循了JDK接口契约 ...

  7. Swift3.0P1 语法指南——集合类型

    原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...

  8. 可迭代的集合类型使用foreach语句

    在学习算法这本书图论那一部分的时候,接触到了几个类似for(int w:G.adj(v)),的语句,不是很理解,就去百度,发现这是一种叫做foreach的语法,在书的76页有讲到,但是之前没认真看书, ...

  9. Swift中的集合类型

    一.引子: 在2014年10月TIOBE编程语言排行榜中,Swift位居第18位,从2014WWDC发布会首次公布至今不到半年时间,swift一直受到编程人 员的追捧,其热衷程度并不亚于当红巨星Tay ...

随机推荐

  1. 使用 CountDownLatch 控制多个线程执行顺序

    已同步更新至:http://dxjia.cn/2015/08/countdownlatch-use/ 有时候会有这样的需求,多个线程同时工作,然后其中几个可以随意并发执行,但有一个线程需要等其他线程工 ...

  2. Django 源码小剖: 初探中间件(middleware)

    因为考虑到文章的长度, 所以 BaseHandler 的展开被推迟了. 在 BaseHandler 中隐藏着中间件的信息, 较常见的 SessionMiddleware 就已经默认安装.  BaseH ...

  3. EZGUI下的动态图片的处理

    EZGUI的使用过程中,有时需要使用动态的图片,比如商店里面商品的ICON,好友的头像等,通过使用SimpleSprite可以实现这个功能.   比如一个通过网络显示好友头像: WWW www = n ...

  4. MySQL HA方案之MySQL半复制+MHA+Keepalived+Atlas+LVS[转]

    MySQL HA方案之MySQL半复制+MHA+Keepalived+Atlas+LVS 简介 目前Mysql高可用的方案有好多,比如MMM,heartbeat+drbd,Cluster等,还有per ...

  5. css中的position:relative和absolute 属性

    语法: position : static | absolute | fixed | relative 取值: static :默认值.无特殊定位,对象遵循HTML定位规则 absolute :将对象 ...

  6. OpenSSL Command-Line HOWTO

    OpenSSL Command-Line HOWTO The openssl application that ships with the OpenSSL libraries can perform ...

  7. Red Hat Enterprise Linux 各版本详细说明

    https://access.redhat.com/articles/3078#RHEL7 Red Hat Enterprise Linux Release Dates Updated Novembe ...

  8. SSAS:OLE DB 错误: OLE DB 或 ODBC 错误 : Login failed for user 'NT Service\MSSQLServerOLAPService'

    问题描述 按照微软官方教程尝试使用SSAS做OLAP时,出现如下错误信息: Severity Code Description Project File Line Suppression State ...

  9. 何为.Net Remoting【转】

    借助基维百科给它的定义如下: NET Remoting 是微软 .NET Framework 中的一种网络通讯技术,与 XML Web Service 不同的是,它可以使用 SOAP 以外的协定来通讯 ...

  10. URAL 1549 Another Japanese Puzzle(构造)

    题目大意 构造一条闭合路线,使得路线不能相交,并且走直线的步数小于等于 S,转弯(左转和右转)的步数小于等于 T.(0≤S,T≤1000) 求一条最长的路线 做法分析 注意到,因为要求路线闭合,那么转 ...