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;
        }
    }
  • 相关阅读:
    yii 引入文件
    CodeForces 621C Wet Shark and Flowers
    面试题题解
    POJ 2251 Dungeon Master
    HDU 5935 Car(模拟)
    HDU 5938 Four Operations(暴力枚举)
    CodeForces 722C Destroying Array(并查集)
    HDU 5547 Sudoku(dfs)
    HDU 5583 Kingdom of Black and White(模拟)
    HDU 5512 Pagodas(等差数列)
  • 原文地址:https://www.cnblogs.com/rainman/p/3085873.html
Copyright © 2011-2022 走看看