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;
        }
    }
  • 相关阅读:
    learning scala view collection
    scala
    learning scala dependency injection
    learning scala implicit class
    learning scala type alise
    learning scala PartialFunction
    learning scala Function Recursive Tail Call
    learning scala Function Composition andThen
    System.Threading.Interlocked.CompareChange使用
    System.Threading.Monitor的使用
  • 原文地址:https://www.cnblogs.com/rainman/p/3085873.html
Copyright © 2011-2022 走看看