关于c#里的集合的,结构体,枚举的定义,解释与应用
那么先写一下 集合 。
集合和数组很相似,数组里的类型是必须同一类型,固定长度。然而集合里的可以是不同类型,不固定长度的。所以集合运用的灵活度要更高一些。
要使用集合,必须先引用命名空间:
using System.Collections;

collection 是集合 Generic 是泛型;
就是在窗口最上面的命名空间里。
直接打上就行。
然后就可以直接用集合了。
引用之后需要先定义一个集合。就类似于一个定义一个变量的意思。
定义集合可以用
ArrayList arr = new ArrayList(); 这是一个弱类型集合;
集合中定义的变量可以使多种类型(比如一个string一个int···)。
List<T> T:泛型 T是泛型的意思 ,就是说可以容纳各种类型的变量
List<int> slist = new List<int>(); 这是一个强类型集合
强类型集合中的变量必须是同一类型。
泛型集合比较常用,好用。
赋值
以ArrayList集合为例;(list集合也是一样的)
arr.Add("值/变量"); // 里面输入的值是object类型
object类型:所有类型的基础类型(基类),也就是说可以放任何类型进去。
获取个数:
arr.Count; 可以输出这个集合中有多少个数。
取值:
arr[索引] 取出这个集合中对应输入索引值的变量。和数组一样的。
插队:
arr.Insert(索引,值/变量) 可以再集合里面的值或者变量中插进去一个值或变量;
移除:
arr.Remove(值); 输入一个值,移除集合内的对应值。
arr.RemoveAt(索引);输入一个索引值,移除集合内的索引值。
反转:
arr.Reverse(); - 全部反转 将集合里的值或者变量顺序翻转。
arr.Reverse(索引,个数); - 输入一个索引值,指定索引位置之后多少个值或者变量翻转。
清空:
arr.Clear(); 清空所有值
这里经常用到 foreach 遍历循环类型
foreach(变量类型 定义变量 in 集合名) 循环里面的每一个,从头到尾,不管数量,有多少看多少。
一般用在强集合类型,因为弱类型集合 变量类型太乱。
下面说一些其他比较特殊的集合类型
哈希表集合:弱类型 自定义索引的集合
Hashtable hs = new Hashtable();
输入是也是 hs.Add(object.key,object.value)
键值对 键 值
hs.(1,"hehe")
hs.("aaa","haha")
Console.Write(hs[1]); 括号内输入键,输出对应的值, 键是自己自定义的。
这里循环最好使用 foreash
如果用forea循环 string s in valuse(值) 也可以打印 键(Key)
字典:强类型
Dictionary<int, string> dic = new Dictionary<int, string>();
与哈希表类型差不多,强类型,键和值都必须是自己定义的同一种类型。
下面放一个练习:
创建一个集合,1-100的数字
要这个集合最后的内容是50-90
List<int> list = new List<int>();
for (int i = ; i <= ; i++)
{
list.Add(i);
}
Console.WriteLine(list.Count);
List<int> list1 = new List<int>();
foreach (int aa in list)
{
if (aa >= && aa <= )
{
list1.Add(aa);
}
}
list = list1;
list1 = null;
Console.WriteLine(list.Count);
Console.ReadLine();
再来说一下结构体, 结构体按我的理解就是一个对象它对应的所有数据统计到一个变量里,这个变量就是结构体。
结构体:用户自定义类型 定义的时候可以自己定义他的类型(按照自己所需,容易记住的)
定义位置:定义在Main函数的外面,类的里面(program)
定义格式:
struct 自定义名字
{
public 数据类型 名字;
public 数据类型 名字;
...
...
}
定义结束后再Main函数里声名结构体实例化
结构体类型 ss = new 结构体类型(); 结构体类型就是之前定义的结构体的名字
Student s = new Student(); 这里 Student就是自己定义的结构体 , s 是定义的studen的变量。
赋值:
s.??? (数据类型的名字)
s.???
在赋完值之后要把值输入到结构体里
用 ss.Add(s); 看颜色相关变量
取值:
s.??? 也是一样的
枚举 (统一记录格式用)
枚举定义也要写在 Main函数的外面
enum WeeK(星期)
{
1
2
3
}
定义完输出时
Week. (打上点之后就会出现选择框,选择之前定义的结构体中输入的所有值)
这就是枚举
关于c#里的集合的,结构体,枚举的定义,解释与应用的更多相关文章
- 【2017-03-02】C#集合,结构体,枚举
集合 集合与数组的区别 数组:同一类型,固定长度 集合:不同类型,不固定长度 使用集合前需要: 引用命名空间:using System.Collections; 1.普通集合 定义: Arra ...
- C 碎片八 结构体&枚举&联合
一.结构体 1, 结构体定义 结构体类型的定义:任意数据类型变量的集合.用于描述一个具体的事物的信息,在C语言中描述一件事物一般都是用结构体 声明结构体类型的格式: struct 结构体名 {成员列 ...
- 【C语言入门教程】7.1 结构体类型变量的定义和引用
前面学习了变量和数组这些简单的数据结构,它们的特点是必须使用规定的数据类型.例如数组被定义为整型后,它的所有存储单元都是由整型构成.现实生活中某一类事物的共同属性可能是由不同的数据类型组成的集合,或者 ...
- C# 结构体 枚举类型
注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianl ...
- C#基础 结构体 枚举类型
结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fen ...
- OC基础--结构体 枚举做类成员属性
结构体 枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期 毕业日期 -- 结构体 代码示例: 声明文件 Student.h: #import <Foundation ...
- 【C语言入门教程】7.2 结构体数组的定义和引用
7.2 结构体数组的定义和引用 当需要使用大量的结构体变量时,可使用结构体定义数组,该数组包含与结构体相同的数据结构所组成的连续存储空间.如下例所示: struct student stu_a[50] ...
- C#结构体指针的定义及使用详解(intptr的用法)
在解析C#结构体指针前,必须知道C#结构体是如何定义的.在c#中同样定义该结构体. C#结构体指针之C#结构体的定义: [StructLayout(LayoutKind.Sequential)] pu ...
- c# 课堂总结6 --集合与结构体
一.集合 使用时必须添加 System.Collections 集合与数组的区别: 1:数组声明了它容纳的元素的类型,而集合不声明.这是由于集合以object形式来存储它们的元素.初始化时集合无需定义 ...
- 【C语言入门教程】7.3 结构体指针的定义和引用
C 语言中指针的操作非常灵活,它也能指向结构体变量对结构体变量进行操作.在学习结构指针之前,需要再次加深对指针的认识.声明指针变量时所使用的数据类型修饰符实际上的作用是定义指针访问内存的范围,如果指针 ...
随机推荐
- [非原创] 常用加密算法整理 AES/SSL(一)
前言: 在伟大的计算机科学家研究下,发明了许多的加密算法,以下做个简答的描述: 一.分类 加密算法分为两种:单向加密.双向加密. 单向加密,不可逆的加密算法,只能加密不能解密: 双向加密,由对称性加密 ...
- IaaS中的统一存储:从设计到实现
转自:https://www.ustack.com/blog/tycc/ “原生的OpenStack并不支持统一存储,云主机服务Nova.镜像服务Glance.云硬盘服务Cinder的后端存储各不相同 ...
- 经典SQL语句(转载)
一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...
- 一些神奇的(优化)板子——来自Loi_black的博客
deque<int>q; void spfa(int s) { ;i<=n;i++) d[i]=1e9; d[s]=; q.push_back(s); used[s]=; while ...
- dyci——IOS动态代码注入
有时候用xib,更改了布局需要重新运行才可以看到效果,对于比较复杂的应用尤其浪费时间,下面介绍一个工具dyci-不需要重Run应用,也能看到效果 yci的网址:https://github.com/D ...
- BestCoder Round #18(hdu5105)Math Problem(高中数学)
最大值无非就是在两个端点或极值点处取得. 我注意讨论了a=0和b=0,却忽略了极值点可能不在L到R的范围内这一问题.被Hack了. #include<iostream> #include& ...
- SVN的安装和使用
1.安装 下载SVN,一直默认安装 安装成功后,配置环境变量path=C:\Program Files\TortoiseSVN\bin 验证SVN安装是否成功:adb -help 或 adb -ver ...
- PNG24在ie6下的完美解决方法!(DD_belatedPNG)
原网址:http://www.zjgsq.com/1629.html 之前写过一篇<js+css滤镜设置解决PNG24在IE6下显示问题> 解决方法不是很完美,使用起来也比较麻烦. DD_ ...
- centos 下配置oracle11gR2开机自启
这里使用的环境是 CentOS 6.6 ,并且已经装好了oracle11gR2 oracle启动分为两个步骤: 1.启动监听 2.启动服务 1.root 用户下修改ORATAB(将N该为Y): [ro ...
- Js中的prototype的用法一
一 prototype介绍 prototype对象是实现面向对象的一个重要机制.每个函数也是一个对象,它们对应的类就是function,每个函数对象都具有一个子对象prototype.Prototyp ...