关于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 语言中指针的操作非常灵活,它也能指向结构体变量对结构体变量进行操作.在学习结构指针之前,需要再次加深对指针的认识.声明指针变量时所使用的数据类型修饰符实际上的作用是定义指针访问内存的范围,如果指针 ...
随机推荐
- Ceph pg分裂流程及可行性分析
转自:https://www.ustack.com/blog/ceph-pg-fenlie/ 1 pg分裂 Ceph作为一个scalable的分布式系统,集群规模会逐渐增大,为了保证数据分布的均匀性, ...
- 07-THREE.JS 各种形状的几何图形
<!DOCTYPE html> <html> <head> <title>Example 02.04 - Geometries</title> ...
- svn上传文件钩子
svn钩子 钩子脚本就是shell的写法,钩子就是被某些版本库事件触发的程序. 常用钩子: post-commit:在提交完成成功创建之后执行该钩子.(提交已经完成,不可更改) 更新之后,通过邮件.微 ...
- Linq练习题
1 . 查询 Student 表中的所有记录的 Sname . Ssex 和 Class 列. select sname,ssex,class from student Linq: from ...
- LeetCode OJ:Validate Binary Search Tree(合法的二叉搜索树)
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
- UnityGUI扩展实例:图片挖洞效果 Mask的反向实现
转载自 https://www.taidous.com/forum.php?mod=viewthread&fid=211&tid=55259 我想大家在用uGUI做界面时,可能经常会碰 ...
- 速记JVM内存模型和垃圾回收策略
一.常用JVM参数 -Xms: 初始堆大小 -Xmx: 最大堆-Xmn: 新生代大小 -Xss: 栈容量 -PermSize: 方法区大小 -MaxPermSize: 最大方法区大小 -MaxDire ...
- C++中头文件、源文件之间的区别与联系
.h头文件和.cpp文件的区别 疑惑1:.h文件能够编写main函数吗? 实验: 编写test.h文件,里面包含main函数 若直接编译g++ test.h -o test,通过file命令 file ...
- Aixs2发布webservice服务
http://www.blogjava.net/pzxsheng/archive/2012/12/21/393319.html 开发前准备: 1.Eclipse Java EE IDE(Juno ...
- .net remoting和wcf自托管——一个bug引发的警示
一.解决问题,需要深入,并从细节入手,多从代码找原因,不能认为代码是死的,不会出错: 之前代码都运行良好,突然某一天,在我电脑上出问题了.出了问题,那就应该找出原因.其实这个问题,本身并不难,好歹给你 ...