那么先写一下 集合 。

集合和数组很相似,数组里的类型是必须同一类型,固定长度。然而集合里的可以是不同类型,不固定长度的。所以集合运用的灵活度要更高一些。

要使用集合,必须先引用命名空间:
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#里的集合的,结构体,枚举的定义,解释与应用的更多相关文章

  1. 【2017-03-02】C#集合,结构体,枚举

    集合 集合与数组的区别 数组:同一类型,固定长度 集合:不同类型,不固定长度 使用集合前需要:     引用命名空间:using System.Collections; 1.普通集合 定义: Arra ...

  2. C 碎片八 结构体&枚举&联合

    一.结构体 1, 结构体定义 结构体类型的定义:任意数据类型变量的集合.用于描述一个具体的事物的信息,在C语言中描述一件事物一般都是用结构体 声明结构体类型的格式: struct  结构体名 {成员列 ...

  3. 【C语言入门教程】7.1 结构体类型变量的定义和引用

    前面学习了变量和数组这些简单的数据结构,它们的特点是必须使用规定的数据类型.例如数组被定义为整型后,它的所有存储单元都是由整型构成.现实生活中某一类事物的共同属性可能是由不同的数据类型组成的集合,或者 ...

  4. C# 结构体 枚举类型

    注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianl ...

  5. C#基础 结构体 枚举类型

    结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fen ...

  6. OC基础--结构体 枚举做类成员属性

    结构体  枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期  毕业日期  --  结构体 代码示例: 声明文件 Student.h: #import <Foundation ...

  7. 【C语言入门教程】7.2 结构体数组的定义和引用

    7.2 结构体数组的定义和引用 当需要使用大量的结构体变量时,可使用结构体定义数组,该数组包含与结构体相同的数据结构所组成的连续存储空间.如下例所示: struct student stu_a[50] ...

  8. C#结构体指针的定义及使用详解(intptr的用法)

    在解析C#结构体指针前,必须知道C#结构体是如何定义的.在c#中同样定义该结构体. C#结构体指针之C#结构体的定义: [StructLayout(LayoutKind.Sequential)] pu ...

  9. c# 课堂总结6 --集合与结构体

    一.集合 使用时必须添加 System.Collections 集合与数组的区别: 1:数组声明了它容纳的元素的类型,而集合不声明.这是由于集合以object形式来存储它们的元素.初始化时集合无需定义 ...

  10. 【C语言入门教程】7.3 结构体指针的定义和引用

    C 语言中指针的操作非常灵活,它也能指向结构体变量对结构体变量进行操作.在学习结构指针之前,需要再次加深对指针的认识.声明指针变量时所使用的数据类型修饰符实际上的作用是定义指针访问内存的范围,如果指针 ...

随机推荐

  1. poj 2513 欧拉图/trie

    http://poj.org/problem?id=2513 Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Total Submi ...

  2. Sublime2 + SASS + Koala 测试

    Sublime SASS语法高亮插件下载地址:https://github.com/kuroir/SCSS.tmbundle/zipball/SublimeText2 koala_2.0.4_setu ...

  3. java学习笔记 --- 多线程(线程安全问题——同步代码块)

    1.导致出现安全问题的原因: A:是否是多线程环境 B:是否有共享数据 C:是否有多条语句操作共享数据 2.解决线程安全问题方法: 同步代码块: synchronized(对象){ 需要同步的代码; ...

  4. 【暂时解决】win10下安装VS2017 15.3版本 提示 未能安装包“Microsoft.NET.4.6.FullRedist.NonThreshold.Resources,version=4.6.81.9,language=zh-CN”。

    win10下安装VS2017 15.3版本的时候,出现以上错误日志提示,请问如何解决的哇? 这个问题,开始我以为是我的安装包所在的路径问题引起的,但是我将安装包移动到了磁盘根目录进行安装,依然出现这个 ...

  5. Sunday算法

        Sunday算法是Daniel M.Sunday于1990年提出的字符串模式匹配.其核心思想是:在匹配过程中,模式串发现不匹配时,算法能跳过尽可能多的字符以进行下一步的匹配,从而提高了匹配效率 ...

  6. uva11997 K Smallest Sums&&UVALive 3135 Argus(优先队列,多路归并)

    #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inc ...

  7. C#进阶之路(五):Linq初识

    关于LINQ的文章,网上有很多,所以这篇文章我主要是总结下我自己的学习心得. 首先需要先了解的相关技术 1.隐式类型.匿名类型.对象初始化器 1)隐式类型,使用var关键字创建,C#编译器会根据用于初 ...

  8. 《Javascript高级程序设计》阅读记录(四):第五章 下

    这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较深入,而且实际使用价值较大的内容记录下来,并且注释上我的一些想法.做这个一方面是提升了我的阅读效果以及方便我以后阅 ...

  9. CODEVS 1174 靶形数独

    题目描述 Description 小城和小华都是热爱数学的好学生,最近,他们不约而同地 迷上了数独游戏,好胜的他们想用数独来一比高低.但普通 的数独对他们来说都过于简单了,于是他们向Z 博士请教,Z ...

  10. 使用python实现两个文件夹里文件的对比(包含内容的对比)

    #-*-coding:utf-8-*- #=============================================================================== ...