.NET ヘルプ

C# キュー(開発者向けの仕組み)

更新済み 1月 4, 2024
共有:

1. 序論

プログラミングの分野では、効率的なデータ処理が成功するソフトウェア開発の基盤となります。 情報を管理および整理する上で重要な役割を果たす基本的なデータ構造の一つがキューです。 C#という強力で多用途なプログラミング言語において、C#キューはデータを順序通りに管理するための基本的なツールとして際立っています。 C#のキューについて詳しく知るには、以下の推奨記事をご覧ください これ 以下のコンテンツを日本語に翻訳してください: これ.

キューは先入先出(First-In-First-Out)を遵守します (先入れ先出し (FIFO)) 最初に追加された要素が最初に削除されるという原則。 この特徴は、データやオブジェクトを特定の順序で処理する必要があるシナリオにおいて特に有用です。例えば、タスクを体系的に処理したり、ウェブサーバーでのリクエストを管理したりする場合などです。

この記事ではC# PDFライブラリを使用します。 IronPDF C# Queue で。

C#キューの種類と使用方法

2.1. 標準キュー

標準のキューはC#のジェネリッククラスであり、開発者は任意のデータ型のキューやデキューを作成することができます。 指定されたオブジェクトの前または後ろに要素を追加するためのEnqueueメソッドや、前から要素を削除するためのDequeueメソッドなどを提供します。 この種のキューは、データ処理が厳密な順序に従うシナリオで広く使用されており、リソースの公平な配分を確保します。

using System;
using System.Collections.Generic;
class Program
{
    static void Main()
    {   // create an empty queue
        Queue<int> standardQueue = new Queue<int>();
        standardQueue.Enqueue(10);
        standardQueue.Enqueue(20);
        standardQueue.Enqueue(30);
        while (standardQueue.Count > 0)
        {
            int element = standardQueue.Dequeue();
            Console.WriteLine($"Dequeued: {element}");
        }}}
using System;
using System.Collections.Generic;
class Program
{
    static void Main()
    {   // create an empty queue
        Queue<int> standardQueue = new Queue<int>();
        standardQueue.Enqueue(10);
        standardQueue.Enqueue(20);
        standardQueue.Enqueue(30);
        while (standardQueue.Count > 0)
        {
            int element = standardQueue.Dequeue();
            Console.WriteLine($"Dequeued: {element}");
        }}}
Imports System
Imports System.Collections.Generic
Friend Class Program
	Shared Sub Main() ' create an empty queue
		Dim standardQueue As New Queue(Of Integer)()
		standardQueue.Enqueue(10)
		standardQueue.Enqueue(20)
		standardQueue.Enqueue(30)
		Do While standardQueue.Count > 0
			Dim element As Integer = standardQueue.Dequeue()
			Console.WriteLine($"Dequeued: {element}")
		Loop
	End Sub
End Class
VB   C#

出力

C# キュー (開発者向けのしくみ): 図1 - 出力: 標準キュー

2.2. プライオリティキュー

特定の状況では、キュー内の要素を優先することが重要になります。 C#には組み込みの優先度キューがありませんが、開発者はソートされたコレクションやカスタムデータ構造を使用してそれを実装することができます。 このタイプのキューは、緊急性や重要性などの特定の基準に基づいて、特定の要素を他の要素よりも優先して処理する必要がある場合に有益です。 以下の内容を日本語に翻訳します:

要素が存在するかを確認し、最も古い要素をキューの最後に配置するためにFIFOスタイルを使用し、含まれる要素の数に基づいて要素がキューの先頭であるかを判断します。

using System;
using System.Collections.Generic;
class Program
{    static void Main()
    {
        SortedSet<int> priorityQueue = new SortedSet<int>();
        priorityQueue.Add(30);
        priorityQueue.Add(10);
        priorityQueue.Add(20);
        while (priorityQueue.Count > 0)
        {
            int element = priorityQueue.Min;
            priorityQueue.Remove(element);
            Console.WriteLine($"Priority Queue Dequeued: {element}");
        }
    }
}
using System;
using System.Collections.Generic;
class Program
{    static void Main()
    {
        SortedSet<int> priorityQueue = new SortedSet<int>();
        priorityQueue.Add(30);
        priorityQueue.Add(10);
        priorityQueue.Add(20);
        while (priorityQueue.Count > 0)
        {
            int element = priorityQueue.Min;
            priorityQueue.Remove(element);
            Console.WriteLine($"Priority Queue Dequeued: {element}");
        }
    }
}
Imports System
Imports System.Collections.Generic
Friend Class Program
	Shared Sub Main()
		Dim priorityQueue As New SortedSet(Of Integer)()
		priorityQueue.Add(30)
		priorityQueue.Add(10)
		priorityQueue.Add(20)
		Do While priorityQueue.Count > 0
			Dim element As Integer = AddressOf priorityQueue.Min
			priorityQueue.Remove(element)
			Console.WriteLine($"Priority Queue Dequeued: {element}")
		Loop
	End Sub
End Class
VB   C#

C# キュー (開発者向けの動作説明): 図2 - 出力: 優先度付きキュー

2.3. 循環キュー

円形キューは最後の要素が最初の要素と連結され、円形の構造を形成するバリアントです。 これは、キューが固定サイズで、新しい要素によって古いキュー要素を循環的に置き換える必要があるシナリオで有利です。 C#で循環キューを実装することは、メモリ使用量を最適化し、データ処理を効率化することができます。

using System;
// Queue class
class CircularQueue
{
    private int [] array;
    private int front, rear, size;
    public CircularQueue(int size)
    {
        this.size = size;
        array = new int [size];
        front = rear = -1;
    }
    // enqueue method
    public void Enqueue(int item)
    {
        if ((front == 0 && rear == size - 1) 
 (rear == (front - 1) % (size - 1)))
        {
            Console.WriteLine("Queue is full");
            return;
        }
        else if (front == -1)
        {
            front = rear = 0;
            array [rear] = item;
        }
        else if (rear == size - 1 && front != 0)
        {
            rear = 0;
            array [rear] = item;
        }
        else
        {
            rear++;
            array [rear] = item;
        }
    }
    public int Dequeue()
    {
        if (front == -1)
        {
            Console.WriteLine("Queue is empty");
            return -1;
        }
        int item = array [front];
        array [front] = -1;
        if (front == rear)
            front = rear = -1;
        else if (front == size - 1)
            front = 0;
        else
            front++;
        return item;
    }
}
class Program
{
    static void Main()
    {   // specified initial capacity 5
        CircularQueue circularQueue = new CircularQueue(5);
        circularQueue.Enqueue(10);
        circularQueue.Enqueue(20);
        circularQueue.Enqueue(30);
        Console.WriteLine($"Circular Queue Dequeued: {circularQueue.Dequeue()}");
        Console.WriteLine($"Circular Queue Dequeued: {circularQueue.Dequeue()}");
    }
}
using System;
// Queue class
class CircularQueue
{
    private int [] array;
    private int front, rear, size;
    public CircularQueue(int size)
    {
        this.size = size;
        array = new int [size];
        front = rear = -1;
    }
    // enqueue method
    public void Enqueue(int item)
    {
        if ((front == 0 && rear == size - 1) 
 (rear == (front - 1) % (size - 1)))
        {
            Console.WriteLine("Queue is full");
            return;
        }
        else if (front == -1)
        {
            front = rear = 0;
            array [rear] = item;
        }
        else if (rear == size - 1 && front != 0)
        {
            rear = 0;
            array [rear] = item;
        }
        else
        {
            rear++;
            array [rear] = item;
        }
    }
    public int Dequeue()
    {
        if (front == -1)
        {
            Console.WriteLine("Queue is empty");
            return -1;
        }
        int item = array [front];
        array [front] = -1;
        if (front == rear)
            front = rear = -1;
        else if (front == size - 1)
            front = 0;
        else
            front++;
        return item;
    }
}
class Program
{
    static void Main()
    {   // specified initial capacity 5
        CircularQueue circularQueue = new CircularQueue(5);
        circularQueue.Enqueue(10);
        circularQueue.Enqueue(20);
        circularQueue.Enqueue(30);
        Console.WriteLine($"Circular Queue Dequeued: {circularQueue.Dequeue()}");
        Console.WriteLine($"Circular Queue Dequeued: {circularQueue.Dequeue()}");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

C#キュー(開発者向けの仕組み):図3 - 出力:循環キュー

3. C#でのIronPDFの紹介

C# Queueの機能とアプリケーションについて掘り下げていくにあたり、それを現実世界のアプリケーションにどのようにシームレスに統合できるかを探ることが重要です。 C#の機能を強化する強力なツールの一つに、IronPDFがあります。

IronPDFは、PDFドキュメントの作成、操作、およびレンダリングを簡素化するC#ライブラリです。 その直感的なAPIにより、開発者はHTML、ASPX、あるいはプレーンテキストからPDFを生成することができます。 IronPDFを使用すると、PDF生成アプリケーションにC# Queueを組み込むプロセスが効率的かつスムーズになります。

3.1. IronPDFのコードでC#キューを使用する方法

C# キューを IronPDF と組み合わせて使用することで、ダイナミックで整理されたPDFドキュメントを作成する方法について詳しく見てみましょう。 ユーザーの入力およびリクエストに基づいてPDFレポートを生成する必要があるWebアプリケーションのシナリオを考えてみましょう。

using IronPdf;
using System;
using System.Collections.Generic;
class PdfGenerator
{
    static void Main()
    {
        // Create a C# Queue to store user requests
        Queue<string> userRequests = new Queue<string>();
        // Simulate user requests being added to the queue
        userRequests.Enqueue("Generate PDF for User 1");
        userRequests.Enqueue("Generate PDF for User 2");
        userRequests.Enqueue("Generate PDF for User 3");
        // Process requests and generate PDFs
        while (userRequests.Count > 0)
        {
            string request = userRequests.Dequeue();
            GeneratePdf(request);
        }
    }
    static void GeneratePdf(string userRequest)
    {
        // Use IronPDF to generate PDF based on user request
        var Renderer = new HtmlToPdf();
        var PDF = Renderer.RenderHtmlAsPdf($"<h1>{userRequest}</h1>");
        // Save the generated PDF
        PDF.SaveAs($"{userRequest.Replace(" ", "_")}.pdf");
    }
}
using IronPdf;
using System;
using System.Collections.Generic;
class PdfGenerator
{
    static void Main()
    {
        // Create a C# Queue to store user requests
        Queue<string> userRequests = new Queue<string>();
        // Simulate user requests being added to the queue
        userRequests.Enqueue("Generate PDF for User 1");
        userRequests.Enqueue("Generate PDF for User 2");
        userRequests.Enqueue("Generate PDF for User 3");
        // Process requests and generate PDFs
        while (userRequests.Count > 0)
        {
            string request = userRequests.Dequeue();
            GeneratePdf(request);
        }
    }
    static void GeneratePdf(string userRequest)
    {
        // Use IronPDF to generate PDF based on user request
        var Renderer = new HtmlToPdf();
        var PDF = Renderer.RenderHtmlAsPdf($"<h1>{userRequest}</h1>");
        // Save the generated PDF
        PDF.SaveAs($"{userRequest.Replace(" ", "_")}.pdf");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Friend Class PdfGenerator
	Shared Sub Main()
		' Create a C# Queue to store user requests
		Dim userRequests As New Queue(Of String)()
		' Simulate user requests being added to the queue
		userRequests.Enqueue("Generate PDF for User 1")
		userRequests.Enqueue("Generate PDF for User 2")
		userRequests.Enqueue("Generate PDF for User 3")
		' Process requests and generate PDFs
		Do While userRequests.Count > 0
			Dim request As String = userRequests.Dequeue()
			GeneratePdf(request)
		Loop
	End Sub
	Private Shared Sub GeneratePdf(ByVal userRequest As String)
		' Use IronPDF to generate PDF based on user request
		Dim Renderer = New HtmlToPdf()
		Dim PDF = Renderer.RenderHtmlAsPdf($"<h1>{userRequest}</h1>")
		' Save the generated PDF
		PDF.SaveAs($"{userRequest.Replace(" ", "_")}.pdf")
	End Sub
End Class
VB   C#

この例では、C# キュー (ユーザーリクエスト) PDF生成のためのユーザーリクエストを格納するために使用されるオブジェクトを返します。 GeneratePdfメソッドはユーザーリクエストを受け取り、IronPDFを利用してHTMLコンテンツをPDFドキュメントに変換し、生成されたPDFファイルを適切な名前で保存します。

この統合方法は、C# Queue と IronPDF 間のシナジーをも示しています。ユーザーのリクエストを整然と処理することで、体系的なPDFドキュメントの生成が行われます。

3.2. 出力#1

C# キュー (開発者向けの仕組み):図4 - 出力1:IronPDFとC# キューを使用してPDFを生成

出力番号2

C# キュー(開発者向けの使用方法): 図5 - 出力2: IronPDFとC#キューを使用してPDFを生成する

3.4. 出力 # 3

C# キュー(開発者向けの仕組み):図6 - 出力3: IronPDFとC# キューを使用してPDFを生成

結論

結論として、C# Queueはデータを順次管理および処理する上で価値のあるツールであることが証明されます。 そのFIFO原則への準拠により、タスクスケジューリングからウェブサーバーでのリクエスト処理まで、幅広いアプリケーションに適しています。 強力なライブラリと組み合わせると IronPDF、C#キューはさらに強力になり、開発者は効率的に整理された動的なPDFドキュメントを作成することが可能になります。

C# キューのニュアンスを理解し、IronPDFのようなツールとの統合を探求することで、開発者はデータ管理と処理のために堅牢で効率的なソリューションを設計することができます。 技術が進化し続ける中、C# Queue のような基本データ構造と革新的なライブラリとのシナジーは、ソフトウェア開発の風景を形成する上で重要な役割を果たすでしょう。

IronPDF. HTMLからPDFへの変換についてさらに詳しく知るには、以下をご覧ください リンク.

< 以前
Hangfire .NET Core(開発者向けの動作原理)
次へ >
C# ケース文(開発者向けの仕組み)

準備はできましたか? バージョン: 2024.9 新発売

無料のNuGetダウンロード 総ダウンロード数: 10,659,073 View Licenses >