关于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 语言中指针的操作非常灵活,它也能指向结构体变量对结构体变量进行操作.在学习结构指针之前,需要再次加深对指针的认识.声明指针变量时所使用的数据类型修饰符实际上的作用是定义指针访问内存的范围,如果指针 ...
随机推荐
- 如何实现vue-cli搭建的前端项目的自动打包
实现vue-cli + webpack +vue项目的自动打包: 后台java代码: public class OpenDirectory { public static void main(Stri ...
- nginx安装目录
1.rpm -ql nginx看看通过yum安装到哪里了 2./etc/logrotate.d/nginx 配置 nginx日志轮转 用于logrotate服务的日志切割 3./etc/ngin ...
- Mybatis 别名机制,自动扫描 数据的增删改
mybatis别名机制: 在mybatis.xml文件中的<configuration></configuration>标签中间加入属性<typeAliases>& ...
- 利用wtl的CDialogResize自动调整atl ActiveX控件布局
前言 利用atl 开发activex控件时,如果使用atl复合控件时,acitvex控件上的界面元素不会自动改变大小,如果自己在OnSize中处理每个子控件的布局是一件非常麻烦的事,我们可以借助wtl ...
- jsp中向浏览器页面输出的方式总结
jsp中百分号内输出 不需要有JavaScript标签 1.因为jsp就是包含在html 里面,所以什么都不干时,就是在body里面输出html内容 2.百分号 内是JavaScript代码?java ...
- UVA - 11212 Editing a Book (IDA*)
给你一个长度为n(n<=9)的序列,每次可以将一段连续的子序列剪切到其他地方,问最少多少次操作能将序列变成升序. 本题最大的坑点在于让人很容易想到许多感觉挺正确但实际却不正确的策略来避开一些看似 ...
- UVA - 1606 Amphiphilic Carbon Molecules (计算几何,扫描法)
平面上给你一些具有黑或白颜色的点,让你设置一个隔板,使得隔板一侧的黑点加上另一侧的白点数最多.隔板上的点可视作任意一侧. 易知一定存在一个隔板穿过两个点且最优,因此可以先固定以一个点为原点,将其他点中 ...
- 20181229模拟 T1 palindrome
20181229模拟 T1 palindrome 题意 : \(S\)是字符串\(s\)的子串可重集,求\(\sum\limits_{x\in S}\sum\limits_{y\in S}(|x|+| ...
- UI及物体渲染顺序
1.决定UI渲染在所有物体前,ZTest Always,Canvas中的RenderMode影响该值. 2.都是ZTest Always 时影响覆盖的因素: 父子及先后关系: 渲染队列: sortin ...
- Loadrunner-场景设置以及监控结果分析
一.Controller的基本工作原理:通过1.2.3设置来模拟用户的操作,收集出4的各种信息 二.场景设置一般步骤 1.新建场景(Controller) 2.添加脚本 3.设置Schedule(设置 ...