zoukankan      html  css  js  c++  java
  • 关于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.keyobject.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 = 1; i <= 100; i++)
                {
                    list.Add(i);
                }
    
                Console.WriteLine(list.Count);
    
                List<int> list1 = new List<int>();
                foreach (int aa in list)
                {
                    if (aa >= 50 && aa <= 90)
                    {
                        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.  (打上点之后就会出现选择框,选择之前定义的结构体中输入的所有值)

    这就是枚举

  • 相关阅读:
    python学习笔记十五-生成器
    python学习笔记十四-迭代器
    python学习笔记十三-装饰器
    The Zen of Python, by Tim Peters
    python学习笔记十二-函数
    python学习笔记十一-集合set
    tensorflow2 gpu 在 win10 上安装过程和问题处理
    anaconda navigator stuck 卡在 loading applications... 处理
    python工具pip加速For windows
    WCF With StructureMap
  • 原文地址:https://www.cnblogs.com/big-lll/p/6505980.html
Copyright © 2011-2022 走看看