zoukankan      html  css  js  c++  java
  • C#中泛型的使用

    命名空间:using System.Collections.Generic;

    普通数组:在声明时必须制定数组的长度和数据类型;ArrayList:数组元素数据类型和长度不受限制,但效率稍微低些;泛型:类似于数组功能,其长度不受限制,数据类型在声明时必须指定。

    C#中预定义了集中常用的泛型类,如:List<T>、Dictionary<TKey, TValue>、Queue<T>等等

    1. List<T>

    语法:
    List<类型> 变量 = new List<类型>();
    List<类型> 变量 = new List<类型> { XXX, XXX, XXX};	// 声明并初始化

    示例1:简单实用:声明、初始化、赋值、读取等操作。在下例中可以看出,变量list1可以任意的添加元素,长度不受限制。

    // 声明方式1
    List list1 = new List();
    list1.Add(211);
    list1.Add(985);
    
    // 声明方式2
    List list2 = new List { 211, 985 };
    list2.Add(136);
    
    for (int i = 0; i < list2.Count; i++)
    {
        Console.Write(list2[i].ToString());
    }

    2. Dictionary<TKey, TValue>

    上例中泛型变量list1中存储的元素是Int类型的变量,而在实际的应用当中往往要比这更加复杂。Dictionary<Tkey, TValue>泛型类为C#预定义的泛型类,它所存储的每个元素由一对{key:value}两个变量组成。

    • 每个元素可以理解为一行记录,Key为主键,必须唯一,可以为Int、String等类型。
    • Value项可以为任意类型,可以是Int、String、数组等,也可以是实例化的对象。

    ① 简单使用

    class Program
    {        
        static void Main(string[] args)
        {
            // 实例化三个User对象
            User user1 = new User("李宁", 21);
            User user2 = new User("耐克", 42);
            User user3 = new User("阿迪", 31);
    
            // 声明Dictionary泛型变量users
            // Key的类型为Int;Value的类型为User
            Dictionary<int, User> users = new Dictionary<int, User>();
    
            // 向users添加“元素”,“元素”的key不能重复
            users.Add(2, user1);
            users.Add(3, user2);
            users.Add(5, user3);
    
            // 循环遍历每个“元素”
            foreach (var p in users)
            {
                Console.Write(p.Key);
                Console.Write(p.Value.name);
                Console.Write(p.Value.age);
            }
    
            // 直接遍历元素的Values
            foreach (User u in users.Values)
            {
                Console.Write(u.name);
                Console.Write(u.age);
            }
        }
    }
    // User类
    class User
    {
        public string name;     // 姓名
        public int age;         // 年龄
        public User(string name, int age)
        {
            this.name = name;
            this.age = age;
        }
    }

    ② 作为参数使用

    class Program
    {
        static void Main(string[] args)
        {
            User user1 = new User("李宁", 21);
            User user2 = new User("耐克", 42);
            User user3 = new User("阿迪", 31);
            
            Dictionary<int, User> users = new Dictionary<int, User>();
            users.Add(2, user1);
            users.Add(3, user2);
            users.Add(5, user3);
                    
            Program.show(users);    // 将泛型变量作为函数参数使用
        }
        // 注意参数类型的书写格式
        static void show(Dictionary<int, User> list)
        {
            foreach (var p in list)
            {
                Console.Write(p.Key);
                Console.Write(p.Value.name);
                Console.Write(p.Value.age);
            }        
        }
    }
    class User
    {
        public string name;     // 姓名
        public int age;         // 年龄
        public User(string name, int age)
        {
            this.name = name;
            this.age = age;
        }
    }
  • 相关阅读:
    sql server 2008 评估期已过期解决办法 + vs2008破解(转) 狼人:
    发现godaddy亚太机房主机比较慢,怎样转到godaddy美国机房 狼人:
    模拟提交有文件上传的表单(通过http模拟上传文件) 狼人:
    WordPress 批量关闭和打开评论功能 狼人:
    英文seo外链资源整合,怎么样找国外博客资源? 狼人:
    WindowsServer2003+IIS6+ASP+NET+PHP+MSSQL+MYSQL配置说明 |备份于waw.cnblogs.com 狼人:
    Excel表格的35招必学秘技(学会计的快来转载,留着以后用) 狼人:
    MSN去窗口广告方法http://apatch.org/downloads/ 狼人:
    js 实现谷歌浏览器中隐藏标签后setInterval事件暂停 狼人:
    SQL Server 2008过期导致MSSQLSERVER服务无法启动 狼人:
  • 原文地址:https://www.cnblogs.com/rainman/p/3085873.html
Copyright © 2011-2022 走看看