c# in depth的泛型实现实例代码

下面是关于"c#InDepth的泛型实现实例代码"的完整攻略。

1. 什么是c#InDepth?

c#InDepth 是一本经典的 c# 高级编程书籍,由 Jon Skeet 所著。该书有关于泛型编程的讲解以及有许多泛型相关的实例代码。这些代码是泛型编程的经典案例,非常值得学习和掌握。

2. 泛型实现的实例代码

2.1 泛型列表实现

public class GenericList<T>
{
    private class Node
    {
        public Node(T t)
        {
            Next = null;
            Data = t;
        }

        public Node Next { get; set; }
        public T Data { get; set; }
    }

    private Node head;

    public void AddHead(T t)
    {
        Node n = new Node(t);
        n.Next = head;
        head = n;
    }

    public IEnumerator<T> GetEnumerator()
    {
        Node current = head;

        while (current != null)
        {
            yield return current.Data;
            current = current.Next;
        }
    }
}

以上是一个泛型列表的实现,使用了内部的私有类 Node 来表示列表的节点。AddHead() 方法用于向列表头部添加元素,GetEnumerator() 方法则返回一个枚举器,可以使用 foreach 循环遍历列表中的元素。下面是一个使用实例。

static void Main(string[] args)
{
    GenericList<int> list = new GenericList<int>();
    for (int i = 0; i < 10; i++)
    {
        list.AddHead(i);
    }

    foreach (int i in list)
    {
        Console.Write(i + " ");
    }
}

程序输出:9 8 7 6 5 4 3 2 1 0

2.2 泛型栈的实现

public class GenericStack<T>
{
    private int size;
    private T[] items;

    public GenericStack()
    {
        items = new T[10];
        size = 0;
    }

    public void Push(T item)
    {
        if (size == items.Length)
        {
            T[] tmp = new T[items.Length * 2];
            for (int i = 0; i < items.Length; i++)
            {
                tmp[i] = items[i];
            }

            items = tmp;
        }

        items[size++] = item;
    }

    public T Pop()
    {
        if (size == 0)
        {
            throw new InvalidOperationException();
        }

        T item = items[--size];
        items[size] = default(T);
        return item;
    }
}

以上是一个泛型栈的实现。Push() 方法用于向栈中压入元素,Pop() 方法用于从栈中弹出元素。如果栈已满,Push() 方法将会扩展栈的大小。下面是一个使用实例。

static void Main(string[] args)
{
    GenericStack<int> myStack = new GenericStack<int>();
    myStack.Push(1);
    myStack.Push(2);
    myStack.Push(3);
    Console.WriteLine(myStack.Pop()); //输出:3
    Console.WriteLine(myStack.Pop()); //输出:2
    Console.WriteLine(myStack.Pop()); //输出:1
}

以上就是两个泛型实现的示例代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# in depth的泛型实现实例代码 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • c# 实现的支付宝支付

    以下是详细的“c# 实现的支付宝支付”的完整攻略: 一、创建支付宝开发者账号 在使用支付宝支付之前,我们需要先注册一个支付宝开发者账号。注册完成后,登录 支付宝开放平台 点击“开发文档”,选择“支付宝支付”,然后就可以获得相关的开发文档。 二、开通支付宝支付 开发者账号注册完成后需要开通支付宝支付,并获取 appid、private_key 等信息。 三、引…

    C# 2023年6月6日
    00
  • C#使用DoddleReport快速生成报表

    下面是关于C#使用DoddleReport快速生成报表的完整攻略。 一、什么是DoddleReport? DoddleReport是一个基于C#的开源报表生成工具,在.NET平台上运行,可以轻松地生成各种类型的报表,如PDF、Excel、Word等。它可以使用任何.NET应用程序、ASP.NET网站、WinForms或WPF应用程序中编写的数据源,生成定制和…

    C# 2023年5月31日
    00
  • 利用C#实现网络爬虫

    利用C#实现网络爬虫攻略 背景介绍 网络爬虫是一种获取互联网信息的方法。在我们日常使用互联网时,我们通过浏览器访问网站后查看相关的内容。而网络爬虫则是模拟访问网站并将有用的信息提取出来。利用网络爬虫可以快速、自动地收集大量的数据,有很大的应用价值。C#作为一种流行的编程语言,也可以用来实现网络爬虫。 网络爬虫的基本流程 利用C#实现网络爬虫,其实就是模拟浏览…

    C# 2023年6月6日
    00
  • .NET Core支持Cookie和JWT混合认证、授权的方法

    在.NET Core中,我们可以使用Cookie和JWT混合认证、授权的方法来实现更加灵活和安全的身份验证和授权。本攻略将深入探讨这种方法的实现,并提供两个示例说明。 1. 混合认证、授权的基本原理 混合认证、授权的基本原理是将Cookie和JWT结合使用。当用户登录时,我们将用户信息存储在Cookie中,并将JWT作为响应的一部分返回给客户端。客户端在后续…

    C# 2023年5月17日
    00
  • .net自定义事件示例分享

    下面是详细的“.net自定义事件示例分享”的攻略: 1. 简介 在 .NET 中,自定义事件是一种非常常见的编程模式,该模式便于构建松耦合、可扩展和可测试的代码。在 C# 中,使用以下语法创建自定义事件: public event EventHandler<MyEventArgs> MyCustomEvent; 其中,MyCustomEvent …

    C# 2023年5月31日
    00
  • 如何在ASP.NET Core应用程序运行Vue并且部署在IIS上详解

    如何在ASP.NET Core应用程序运行Vue并且部署在IIS上详解 在ASP.NET Core应用程序中运行Vue,可以使用Vue CLI创建Vue项目,并将Vue项目集成到ASP.NET Core应用程序中。在部署到IIS上时,需要将Vue项目打包为静态文件,并将其部署到IIS的静态文件目录中。 以下是在ASP.NET Core应用程序中运行Vue并部…

    C# 2023年5月16日
    00
  • C# DateTime.Now方法: 获取当前日期和时间

    C#中DateTime.Now的作用和使用方法 DateTime.Now 是 C# 中的一个静态属性,用于获取当前系统的日期和时间信息。 例如: DateTime now = DateTime.Now; Console.WriteLine(now); 输出: 2022/1/31 10:37:02 我们可以看到输出的格式为“年/月/日 时:分:秒”。 下面是 …

    C# 2023年4月19日
    00
  • C#操作INI文件的方法详解

    C#操作INI文件的方法详解 什么是INI文件? INI文件(.INI文件)是Windows操作系统中常见的配置文件格式,它的简单文本格式使得多个应用程序和操作系统可以读取并修改它,通常用于保存程序或应用程序的配置信息。INI文件中的数据通常被组织为段落和参数的形式,在应用程序或操作系统中也可以通过读写INI文件来保存和读取配置信息。 C#中操作INI文件的…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部