精华内容
下载资源
问答
  • c#泛型队列
    2021-08-02 08:22:26

    需要命名空间System.Collections.Generic

    使用泛型可以减少装箱拆箱,而且若泛型类型为object,则泛型栈队列可以完全取代普通栈队列.

    Stack<int> _s = new Stack<int>();
    Queue<object> _q = new Queue<object>();

    在其内部方法与使用上,与Stack和Queue一样.

    可参考文章:

    C# Stack

    C# Queue

    资料来源<唐老狮C#教程>

    更多相关内容
  • C# 泛型队列Queue的使用 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace L_Queue { class Program { static void Main...

    C# 泛型队列Queue的使用

    请添加图片描述

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace L_Queue
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("队列 Queue");
    
                #region 1.本质
                // Queue 是队列存储容器
                // 先进先出 
                #endregion
    
                #region 声明
                // using System.Collections.Generic;
                Queue<int> queue = new Queue<int>();
                Queue<string> strQueue = new Queue<string>();
                #endregion
    
                #region
                Console.WriteLine("-----------------------增");
                queue.Enqueue(1);
                queue.Enqueue(2);
                queue.Enqueue(3);
                queue.Enqueue(4);
                printQueue(queue);
                #endregion
    
                #region
                // 队列中不存在删除的概念  只有取(出队列)
                Console.WriteLine("-----------------------取");
                int deItem = queue.Dequeue();
                Console.WriteLine("取出数据:" + deItem);
                printQueue(queue);
                #endregion
    
                #region
                Console.WriteLine("-----------------------查");
                // 查看队头数据,不会移除
                int peekItem = queue.Peek();
                Console.WriteLine("查看队头数据:" + peekItem);
    
                printQueue(queue);
    
                // 查看元素是否在队列中
                if (queue.Contains(4))
                {
                    Console.WriteLine("队列中存在:4" );
                }
                #endregion
    
                #region 遍历
                Console.WriteLine("----------------------遍历");
                Console.WriteLine("当前元素个数:" + queue.Count);
                // 迭代器遍历
                foreach (int item in queue)
                {
                    Console.Write(item + "\t");
                }
                Console.WriteLine("");
    
                // 转为数组遍历
                int[] nArray = queue.ToArray();
    
                for (int i = 0; i < nArray.Length; i++)
                {
                    Console.Write(nArray[i] + "\t");
                }
                Console.WriteLine("");
    
                // 循环出列
                while (queue.Count > 0)
                {
                    int dItem = queue.Dequeue();
                    Console.WriteLine("取出数据:" + dItem);
                }
                #endregion
    
                #region
                queue.Enqueue(1);
                queue.Enqueue(2);
                queue.Enqueue(3);
                Console.WriteLine("-----------------------改");
                printQueue(queue);
                // 无法修改 只能清除 不能随机访问
                Console.WriteLine("清空数据--");
                queue.Clear();
                Console.WriteLine("当前元素个数:" + queue.Count);
                printQueue(queue);
                #endregion
    
                Console.ReadLine();
            }
    
            // 打印队列数据
            private static void printQueue(Queue<int> queue)
            {
                if (queue.Count == 0)
                {
                    Console.WriteLine("--没有数据");
                    return;
                }
                else
                {
                    Console.WriteLine("--打印数据");
                }
    
                foreach (int item in queue)
                {
                    Console.Write(item + "\t");
                }
                Console.WriteLine("");
            }
        }
    }
    
    

    在这里插入图片描述

    展开全文
  • C# 泛型声明

    2020-11-27 11:45:11
    //泛型类 public class GenericClass<T> where T : ISports { } //泛型接口 public interface GenericInterface<S> { } //泛型委托 public delegate void Do<T>() where T : ISports; //泛型方法...

    怎么声明

    //泛型类 
    public class GenericClass<T> where T : ISports
    {
    }
    //泛型接口
    public interface GenericInterface<S>
    {
    }
    //泛型委托
    public delegate void Do<T>() where T : ISports;
    //泛型方法
    public void test<T>(T param)
    {
    }
    

    比如我声明一个泛型类

    public class Test<T>
    {
        public int code { get; set; }
        public string msg { get; set; }
        public int count { get; set; }
        public List<T> data;
    }
    

    引用时

    Test<T> test= new Test<T>();
    

    就是在引用时告诉他你的那个T到底是谁,接口委托也一样

    public class Test:GenericInterface<T>
    {
    }
    //
    

    一般是在定义一个类时传类或者类型时不确定类或者类型定义一个泛型,在引用时通知具体类型

    展开全文
  • C#泛型优先队列

    2017-01-02 23:00:16
    C#泛型优先队列
  • C#泛型使用

    2022-06-17 14:24:08
    所谓泛型是指将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。 一种类型占位符,或称之为类型参数。我们知道一个方法中,一个变量的值可以作为参数,但其实这个变量的类型本身也可以作为参数。泛型...

            所谓泛型是指将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。

            一种类型占位符,或称之为类型参数。我们知道一个方法中,一个变量的值可以作为参数,但其实这个变量的类型本身也可以作为参数。泛型允许我们在调用的时候再指定这个类型参数是什么。在.net中,泛型能够给我们带来的两个明显好处是——避免了强制类型转换,增强类型安全和减少装箱、拆箱。

        通常一个方法或过程的参数都是有明确的数据类型的。
      如 :
      public void ProcessData(int i){}
      public void ProcessData(string i){}
      public void ProcessData(decimal i){}
      public void ProcessData(double i){}等。
      这些方法的签名中的:int ,string,decimal,double 都是明确的数据类型,我们访问这些方法的过程中需要提供提定类型的参数:
      ProcessData(123);
      ProcessData("abc");
      ProcessData("12.12")
      而如果我们将int ,string,decimal,double这些类型也当成一种参数传给方法的时候方法的定义便是这样:
      public void ProcessData<T>(T i){} //T是int ,string,decimal,double这些数据类型的指代
      用户在调用的时候便成了这样:
      ProcessData<string>("abc");
      ProcessData<int>(123);
      ProcessData<double>(12.23);
      这与通常的那些定义的最大区别是,方法的定义实现过程只有一个。但是它具有处理不同的数据类型数据的能力。
            

            c#在尖括号中提供类型参数来指定泛型类,如下所示:

    class Queue<T>
    {
      ...
    }

            这里T就是类型参数,是作为占位符使用的,会在编译时被真正的参数类型取代。写代码实例化泛型Queue时,需要指定取代T的参数类型。在类的定义字段和方法时同样可以用占位符指定这些项的类型。

    class Queue<T>
    {
       ...
        private T[] data;//T作为参数类型
       ...
        public Queue(){
            this.data =new T[DEFAULTQUEUESIZE];   //T作为数据类型
        }
        public  void ENQueue(T item)      //T作为方法参数类型
        {
            ...
        }
        public T Dequeue() //T作为返回值的类型
        {
           ...
           T queueItem=this.data[this.tail];   //数组中的数据是'T'类型
           ...
           return queueItem 
        }
    }

    虽然一般都是使用单字符T,但是参数类型T可以是任何C#的合法标识符。他会被创建Queue对象时指定的类型取代。在下面创建一个int队列和一个Horse队列:

    Queue<int> intQueue=new Queue<int>();
    Queue<Horse> horseQueue=new Queue<Horse>();

    另外,编译器有足够的信息在生成程序时执行严格的类型检查。我们无需在调用Dequeue方法时执行强制的类型转换,能够提早发现任何类型匹配错误:

    inQueue.Enqueue(99);
    int myInt = intQueue.Dequeue();    //无需转型
    Horse myHorse= intQueue.Dequeue(); //编译时错误
                                       //无法将类型从Int隐式转换为Horse

    展开全文
  • 浅谈c# 泛型类的应用

    2021-01-01 06:02:25
    泛型类最常用于集合,如链接列表、哈希表、堆栈、队列、树等。 像从集合中添加和移除项这样的操作都以大体上相同的方式执行,与所存储数据的类型无关。对大多集合类的操作,推荐使用 .NET Framework 类库中所提供的...
  • Unity C# 泛型优先队列

    2021-08-06 13:43:36
    Unity C# 泛型优先队列源码测试一标题测试一结果测试二标题测试二结果 源码 //工具类,用到了里面的一个交换方法,可以自己整合到优先队列的类中去 public static class Utilities { public static void Swap<T&...
  • 详解c# 泛型类的功能

    2020-12-16 21:37:08
    首先创建一个泛型管理器AddDocument()方法添加一个文档到队列中,IsDocumentAvailabe只读属性指示队列中是否还有文档。 public class DocumentManager { private readonly Queue<T> documentQueue = new Queue(); ...
  • 本实例实现了泛型顺序队列泛型循环队列的基本操作,并通过界面演示了队列中元素的变化,最后结合栈实现了回文字符串的判断,通过本实例可以充分掌握C#队列数据结构。
  • C#泛型

    千次阅读 2018-12-15 20:28:11
    C#泛型详解 这篇文章主要讲解C#中的泛型,泛型在C#中有很重要的地位,尤其是在搭建项目框架的时候。 一、什么是泛型 泛型是C#2.0推出的新语法,不是语法糖,而是2.0由框架升级提供的功能。 我们在编程程序时,经常会...
  • C# 泛型

    2021-10-21 18:46:38
    为什么要有泛型: 我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处string数据,或者其他自定义的数据类型,但我们没有办法,只能分别写多个方法处理每个数据类型,因为方法...
  • C#——实现泛型顺序队列和链式队列

    千次阅读 2018-09-13 20:05:10
    顺序队列,使用List为存储器 /// 顺序队列 class MyQueue&amp;lt;T&amp;gt; { List&amp;lt;T&amp;gt; list; public MyQueue() { list = new List&amp;lt;T&amp;gt;(); } //入队 ...
  • 泛型循环队列

    千次阅读 2021-06-12 20:01:54
    循环队列是把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。其将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后...
  • 【记录】C#泛型集合

    2021-08-20 20:37:34
    面试时不知觉的提到了泛型集合,索性记录一下 1.从数组说起数组是具有同一类型的多个对象的集合,是一种数据结构,包含同一类型的多个元素。数组是具有同一类型的多个对象的集合,是一种数据结构,包含同一类型的多...
  • C#泛型

    千次阅读 2020-02-01 15:59:45
    一、泛型类的简介 所谓的泛型就是不知道具体的类型的一种通用表达。泛型和概念和C++中的模板,LabVIEW中的变体略有相似。用泛型定义的类具有多态的作用。 泛型的出现目的在于解决能应用在不同数据类型上的共有代码...
  • C#泛型详解

    2019-10-18 14:00:20
    这篇文章主要讲解C#中的泛型泛型C#中有很重要的地位,尤其是在搭建项目框架的时候。 一、什么是泛型 泛型C#2.0推出的新语法,不是语法糖,而是2.0由框架升级提供的功能。 我们在编程程序时,经常会遇到功能...
  • C#-—体验泛型队列

    千次阅读 2014-10-16 14:48:58
    /**烟台大学计算机学院学生 ...*文件名称:C#-—体验泛型队列 *作者:杨飞 *完成日期:2014年9月2日 *版本号:v1.0 .*对任务及求解方法的描述部分:C#-—体验泛型队列 *我的程序:*/ usi
  • C# 泛型、委托

    2020-02-16 23:03:39
    泛型C#2.0推出的新语法,不是语法糖,而是2.0由框架升级提供的功能。 我们在编程程序时,经常会遇到功能非常相似的模块,只是它们处理的数据不一样。但我们没有办法,只能分别写多个方法来处理不同的数据类型。这...
  • C#的循环队列

    2021-10-15 23:44:49
    // <summary> /// 循环缓存区<t> 范型 工具类 /// </summary> /// <typeparam name="T"></typeparam> public class RingBuffer<T> { public readonly int Size;... public Actio.
  • C#泛型、集合概念

    2018-09-17 17:20:30
    泛型集合(主要位于System.Collections命名空间) 通常设计为操作System.Object类型,因此是非常松散类型的容器。 泛型集合(主要位于System.Collections.Generic) 装箱可以正式定义为:显示的将值类型分配给...
  • C# 语言和公共语言运行时 (CLR) 在 2.0 版本中添加了泛型泛型将类型参数的概念引入 .NET Framework,这样就可以设计具有相同特征的类和方法:在客户端代码声明并初始化这些类和方法之前,这些类和方法会延迟指定一...
  • C#高级--泛型详解

    千次阅读 2021-07-26 17:02:24
    C#高级–泛型详解 一、泛型是什么? 泛型C#2.0推出的新语法,不是语法糖,而是2.0由框架升级提供的功能。 我们在编程程序时,经常会遇到功能非常相似的模块,只是它们处理的数据不一样。但我们没有办法,只能分别...
  • 十九 C# 泛型

    2022-03-12 14:16:42
    1、泛型概述 泛型(Generics)是将类型作为参数传递给类、结构、接口和方法,这些参数通常被称作站位符,是类、就结构、接口和方法所存储或使用的一个或多个类型的占位符。 泛型集合是可以将类型参数用作它所存储的...
  • C#基础篇——泛型

    2021-12-28 23:03:27
    泛型类最常见用法是用于链接列表、哈希表、堆栈、队列和树等集合。无论存储数据的类型如何,添加项和从集合删除项等操作的执行方式基本相同。 static void Main(string[] args) { // T是int类型 GenericClass ...
  • 队列简述 一种先进先出的数据结构 本文主旨 提供一个确定容量的高性能队列的实现 更进一步可以对队列做动态扩容,每次队列满了的时候增加队列容量 队列也可以使用链表实现 实现代码 using System; namespace ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,135
精华内容 2,054
关键字:

c#泛型队列