.NET ヘルプ

C# スレッドスリープメソッド(開発者向けの機能説明)

更新済み 3月 6, 2024
共有:

イントロダクション

マルチスレッドは、現代のソフトウェア開発において重要な側面であり、開発者が複数のタスクを同時に実行することを可能にし、パフォーマンスと応答性を向上させます。 ただし、スレッドを効果的に管理するには、同期と調整を慎重に検討する必要があります。 C#開発者のツールセットでスレッドのタイミングと調整を管理するために不可欠なツールの一つは、Thread.Sleepです。() メソッド。

この記事では、Thread.Sleepの細部について掘り下げていきます。() メソッドの目的、使用法、潜在的な落とし穴、および代替手段を探ります。 さらに、この記事では、 IronPDFC# 用PDFライブラリ アイアンソフトウェアPDF ドキュメントのプログラムによる生成を可能にします。

Thread.Sleep()の理解

について スレッド.Sleep() 以下の内容を日本語に翻訳してください:

``` C# の System.Threading ネームスペースの一部であり、指定された時間の間、現在のスレッドの実行をブロックするために使用されます。待機中のスレッドやブロックされたスレッドは、スリープのために指定された時間が経過するまで実行を停止します。Sleep メソッドは単一の引数を取り、その引数はスレッドが非アクティブな状態を維持する時間間隔を表します。この引数はミリ秒単位で指定することも、TimeSpan オブジェクトとして指定することもでき、希望する一時停止時間を柔軟に表現することができます。


```cs
// Using Thread.Sleep() with a specified number of milliseconds
Thread.Sleep(1000); // block for 1 second
// Using Thread.Sleep() with TimeSpan
TimeSpan sleepDuration = TimeSpan.FromSeconds(2);
Thread.Sleep(sleepDuration); // block for 2 seconds

Thread.Sleep の目的

Thread.Sleepの主な目的は、スレッドの実行に遅延または一時停止を導入することです。 これは様々なシナリオで有益です、例えば:

  1. リアルタイム動作のシミュレーション: アプリケーションがリアルタイム動作をシミュレートする必要があるシナリオでは、遅延を導入することで、モデル化されるシステムのタイミング制約を模倣するのに役立ちます。

  2. 過剰なリソース消費の防止: あるスレッドを短時間停止させることは、絶え間ない実行が不要なシナリオで有用であり、不必要なリソース消費を防止します。

  3. スレッドコーディネーション: 複数のスレッドを扱う場合、一時停止を導入することで、スレッドの実行を同期させ、競合状態を防ぎ、秩序立った処理を保証することができます。

実際の例

現実世界の例を考えてみましょう。 Thread.Sleep() メソッドを使用して信号機制御システムをシミュレートすることができます。 このシナリオでは、赤、黄、緑の信号を持つ信号機の挙動をモデル化するシンプルなコンソールアプリケーションを作成します。

using System .Threading;
public class TrafficLightSimulator
{
    static void Main()
    {
        Console.WriteLine("Traffic Light Simulator");
        while (true)
        {
            // Display the red light
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine($"Stop! Red light - {DateTime.Now.ToString("u")}");
            Thread.Sleep(5000); // Pause for 5 seconds and start execution
            // Display the yellow light
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine($"Get ready! Yellow light - {DateTime.Now.ToString("u")}");
            Thread.Sleep(2000); // Pause for 2 seconds
            // Display the green light
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine($"Go! Green light - {DateTime.Now.ToString("u")}");
            Thread.Sleep(5000); // Pause for 5 seconds
            // Reset console color
            Console.ResetColor();
            Console.Clear();
        }
    }
}
using System .Threading;
public class TrafficLightSimulator
{
    static void Main()
    {
        Console.WriteLine("Traffic Light Simulator");
        while (true)
        {
            // Display the red light
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine($"Stop! Red light - {DateTime.Now.ToString("u")}");
            Thread.Sleep(5000); // Pause for 5 seconds and start execution
            // Display the yellow light
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine($"Get ready! Yellow light - {DateTime.Now.ToString("u")}");
            Thread.Sleep(2000); // Pause for 2 seconds
            // Display the green light
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine($"Go! Green light - {DateTime.Now.ToString("u")}");
            Thread.Sleep(5000); // Pause for 5 seconds
            // Reset console color
            Console.ResetColor();
            Console.Clear();
        }
    }
}
Imports System.Threading
Public Class TrafficLightSimulator
	Shared Sub Main()
		Console.WriteLine("Traffic Light Simulator")
		Do
			' Display the red light
			Console.ForegroundColor = ConsoleColor.Red
			Console.WriteLine($"Stop! Red light - {DateTime.Now.ToString("u")}")
			Thread.Sleep(5000) ' Pause for 5 seconds and start execution
			' Display the yellow light
			Console.ForegroundColor = ConsoleColor.Yellow
			Console.WriteLine($"Get ready! Yellow light - {DateTime.Now.ToString("u")}")
			Thread.Sleep(2000) ' Pause for 2 seconds
			' Display the green light
			Console.ForegroundColor = ConsoleColor.Green
			Console.WriteLine($"Go! Green light - {DateTime.Now.ToString("u")}")
			Thread.Sleep(5000) ' Pause for 5 seconds
			' Reset console color
			Console.ResetColor()
			Console.Clear()
		Loop
	End Sub
End Class
VB   C#

以下のプログラム例では、whileループの中でシンプルな信号機シミュレーションを行っています。Thread.Sleep() メソッドは信号機の信号の切り替え間に遅延を導入するために使用されます。 例がどのように機能するかは次の通りです:

  1. プログラムは連続操作をシミュレートするために無限ループに入ります。

  2. 赤いライトが5秒間表示され、停止信号を表します。

  3. 5秒後、黄色のライトが2秒間点灯し、準備段階を示します。

  4. 最終的に、車両が進行できるように緑色の信号が5秒間表示されます。

  5. コンソールの色がリセットされ、ループが繰り返されます。

出力

C# スレッド スリープ メソッド (開発者向けの動作方法): 図 1 - プログラム出力: Thread.Sleep() メソッドを使用した信号機シミュレーターの表示。

この例では、Thread.Sleepの使い方を示します。() 交通信号シミュレーションのタイミングを制御するために使用でき、実世界のシステムの動作をモデル化する簡単な方法を提供します。 以下は例にすぎないことに留意してください。より複雑なアプリケーションでは、ユーザー入力の処理、複数の交通信号機の管理、正確なタイミングの確保のために、より高度なスレッド処理および同期技術を検討することをお勧めします。

Sleep メソッドで Timespan タイムアウトを使用する

TimeSpan を Thread.Sleep で使用することができます。() スリープ時間を指定する方法。 以下は、TimeSpanを使用して前の例の信号シミュレーションを拡張した例です:

using System;
using System.Threading;
class TrafficLightSimulator
{
    public static void Main()
    {
        Console.WriteLine("Traffic Light Simulator");
        while (true)
        {
            // Display the red light
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("Stop! Red light- {DateTime.Now.ToString("u")}");
            Thread.Sleep(TimeSpan.FromSeconds(5)); // Pause for 5 seconds
            // Display the yellow light
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("Get ready! Yellow light-     {DateTime.Now.ToString("u")}");
            Thread.Sleep(TimeSpan.FromSeconds(2)); // Pause for 2 seconds
            // Display the green light
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Go! Green light- {DateTime.Now.ToString("u")}");
            Thread.Sleep(TimeSpan.FromSeconds(5)); // Pause for 5 seconds
            // Reset console color
            Console.ResetColor();
            Console.Clear();
        }
    }
}
using System;
using System.Threading;
class TrafficLightSimulator
{
    public static void Main()
    {
        Console.WriteLine("Traffic Light Simulator");
        while (true)
        {
            // Display the red light
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("Stop! Red light- {DateTime.Now.ToString("u")}");
            Thread.Sleep(TimeSpan.FromSeconds(5)); // Pause for 5 seconds
            // Display the yellow light
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("Get ready! Yellow light-     {DateTime.Now.ToString("u")}");
            Thread.Sleep(TimeSpan.FromSeconds(2)); // Pause for 2 seconds
            // Display the green light
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Go! Green light- {DateTime.Now.ToString("u")}");
            Thread.Sleep(TimeSpan.FromSeconds(5)); // Pause for 5 seconds
            // Reset console color
            Console.ResetColor();
            Console.Clear();
        }
    }
}
Imports System
Imports System.Threading
Friend Class TrafficLightSimulator
	Public Shared Sub Main()
		Console.WriteLine("Traffic Light Simulator")
		Do
			' Display the red light
			Console.ForegroundColor = ConsoleColor.Red
			Console.WriteLine("Stop! Red light- {DateTime.Now.ToString("u")}")
			Thread.Sleep(TimeSpan.FromSeconds(5)) ' Pause for 5 seconds
			' Display the yellow light
			Console.ForegroundColor = ConsoleColor.Yellow
			Console.WriteLine("Get ready! Yellow light-     {DateTime.Now.ToString("u")}")
			Thread.Sleep(TimeSpan.FromSeconds(2)) ' Pause for 2 seconds
			' Display the green light
			Console.ForegroundColor = ConsoleColor.Green
			Console.WriteLine("Go! Green light- {DateTime.Now.ToString("u")}")
			Thread.Sleep(TimeSpan.FromSeconds(5)) ' Pause for 5 seconds
			' Reset console color
			Console.ResetColor()
			Console.Clear()
		Loop
	End Sub
End Class
VB   C#

以下の変更された例では、TimeSpan.FromSeconds()は、希望するスリープ期間を表すTimeSpanオブジェクトを作成するために使用されます。 これにより、コードはより読みやすく表現豊かになります。

Thread.SleepクラスのTimeSpanプロパティを使用することによって()メソッドでは、秒単位で直接持続時間を指定することができます (TimeSpanでサポートされている他のユニット)時間間隔をより直感的に扱うための方法を提供します。 アプリケーションでより長いまたは複雑なスリープの期間を扱う際には、これが特に役立ちます。

ユースケース

  1. リアルタイム動作のシミュレーション: リアルタイムシステムの動作をモデル化する必要があるシミュレーションアプリケーションを考えてみましょう。 戦略的にThread.Sleep()コード内で を使用することで、実際のシステムで発生する時間遅延を模倣し、シミュレーションの精度を向上させることができます。
// Simulating real-time behavior with Thread.Sleep()
SimulateRealTimeEvent();
Thread.Sleep(1000); // Pause for 1 second
SimulateNextEvent();
// Simulating real-time behavior with Thread.Sleep()
SimulateRealTimeEvent();
Thread.Sleep(1000); // Pause for 1 second
SimulateNextEvent();
' Simulating real-time behavior with Thread.Sleep()
SimulateRealTimeEvent()
Thread.Sleep(1000) ' Pause for 1 second
SimulateNextEvent()
VB   C#
  1. アニメーションとUIの更新: グラフィカルなWeb開発アプリケーションやゲーム開発において、スムーズなアニメーションとUIの更新は重要です。 `Thread.Sleep (スレッド スリープ)()フレームレートを制御し、更新が視覚的に心地よいペースで行われるようにするために使用できます。
// Updating UI with controlled delays
UpdateUIElement();
Thread.Sleep(50); // Pause for 50 milliseconds
UpdateNextUIElement();
// Updating UI with controlled delays
UpdateUIElement();
Thread.Sleep(50); // Pause for 50 milliseconds
UpdateNextUIElement();
' Updating UI with controlled delays
UpdateUIElement()
Thread.Sleep(50) ' Pause for 50 milliseconds
UpdateNextUIElement()
VB   C#
  1. 外部サービスコールの制限: 外部サービスやAPIとやり取りする際、過剰なリクエストを防ぐために、レート制限やスロットリングを設けることは一般的です。 Thread.Sleep (スレッド スリープ)() は連続するサービス呼び出し間に遅延を入れるために使用され、レート制限を遵守することができます。
// Throttling service calls with Thread.Sleep()
CallExternalService();
Thread.Sleep(2000); // Pause for 2 seconds before the next call
CallNextService();
// Throttling service calls with Thread.Sleep()
CallExternalService();
Thread.Sleep(2000); // Pause for 2 seconds before the next call
CallNextService();
' Throttling service calls with Thread.Sleep()
CallExternalService()
Thread.Sleep(2000) ' Pause for 2 seconds before the next call
CallNextService()
VB   C#

Thread.Sleep()の利点

  1. 同期と調整: Thread.Sleep()はスレッドの実行を同期させ、競合状態を防止し、複数スレッドを扱う際に秩序だった処理を保証します。

  2. リソースの節約: スレッドを一時的に停止することは、常時実行が不要なシナリオでシステムリソースを節約するのに有利です。

  3. シンプルさと可読性: このメソッドは遅延を導入するためのシンプルで可読性の高い方法を提供し、特にマルチスレッドの概念に慣れていない開発者にとってコードをより理解しやすくします。

潜在的な落とし穴と考慮事項

Thread.Sleepの間()` は遅延を導入するための簡単な解決策ですが、開発者が注意すべき潜在的な落とし穴や考慮事項があります。

  1. スレッドのブロック: スレッドがThread.Sleepを使って一時停止されるとき()、その間、他の作業を実行できません。応答性が重要なシナリオでは、メインスレッドを長時間ブロックすると、ユーザーエクスペリエンスの低下につながります。

  2. タイミングの不正確: ポーズの持続時間の正確性は、基盤となるオペレーティングシステムのスケジューリングに依存しており、正確ではない可能性があります。開発者は Thread.Sleep に依存する際に注意が必要です。()正確なタイミング要件を満たすために。

  3. 代替アプローチ: 現代のC#開発では、Task.Delayのような代替手段()メソッドや非同期プログラミングであるasync/awaitの使用は、Thread.Sleepよりも好まれることがよくあります。()`. これらのアプローチは、スレッドをブロックすることなく、より良い応答性を提供します。
// Using Task.Delay() instead of Thread.Sleep()
await Task.Delay(1000); // Pause for 1 second asynchronously
// Using Task.Delay() instead of Thread.Sleep()
await Task.Delay(1000); // Pause for 1 second asynchronously
' Using Task.Delay() instead of Thread.Sleep()
Await Task.Delay(1000) ' Pause for 1 second asynchronously
VB   C#

IronPDFの紹介

IronPDF, Iron Softwareによって開発されたC# PDFライブラリで、PDF生成およびリーダーとして機能します。 このセクションでは、基本機能を紹介します。 詳細については、参照してください ドキュメント ページ

IronPDFのハイライトは、その HTMLからPDF レイアウトとスタイルがすべて保持される機能。 ウェブコンテンツをPDFに変換し、レポート、請求書、文書作成に便利です。 HTMLファイル、URL、およびHTML文字列は簡単にPDFに変換できます。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
VB   C#

インストール

インストールするには IronPDFNuGet パッケージ マネージャー コンソールまたは Visual Studio パッケージ マネージャーのいずれかを利用します。

以下のコマンドのいずれかを使用して、NuGetパッケージマネージャーコンソールを使用してIronPDFライブラリをインストールします:

dotnet add package IronPdf
# or
Install-Package IronPdf

Visual Studioのパッケージマネージャーを使用してIronPDFライブラリをインストールします:

C# スレッドスリープメソッド(開発者向けの動作方法):図2 - NuGet パッケージ マネージャーの検索バーに「ironpdf」と入力して、IronPDF をインストールします。

using System;
using IronPdf;
class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public void DisplayFullName()
    {
        if (string.IsNullOrEmpty(FirstName) 
 string.IsNullOrEmpty(LastName))
        {
            LogError($"Invalid name: {nameof(FirstName)} or {nameof(LastName)} is missing.");
        }
        else
        {
            Console.WriteLine($"Full Name: {FirstName} {LastName}");
        }
    }
    public void PrintPdf()
    {
        Console.WriteLine("Generating PDF using IronPDF.");
        string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {FirstName}!</h1>
<p>First Name: {FirstName}</p>
<p>First Name: {LastName}</p>
</body>
</html>";
        // Create a new PDF document
        var pdfDocument = new ChromePdfRenderer();
        pdfDocument.RenderHtmlAsPdf(content).SaveAs("person.pdf");
    }
    private void LogError(string errorMessage)
    {
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine($"Error: {errorMessage}");
        Console.ResetColor();
    }
}
class Program
{
    public static void Main()
    {
        // Create an  instance of the Person class
        Person person = new Person();
        // Attempt to display the full name
        person.DisplayFullName();
        // Set the properties
        person.FirstName = "John"; // string literal
        person.LastName = "Doe"; // string literal
        // Display the full name again
        person.DisplayFullName();
        Console.WriteLine("Pause for 2 seconds and Print PDF");
        Thread.Sleep(2000); // Pause for 2 seconds and Print PDF
        // Print the full name to PDF
        person.PrintPdf();
    }
}
using System;
using IronPdf;
class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public void DisplayFullName()
    {
        if (string.IsNullOrEmpty(FirstName) 
 string.IsNullOrEmpty(LastName))
        {
            LogError($"Invalid name: {nameof(FirstName)} or {nameof(LastName)} is missing.");
        }
        else
        {
            Console.WriteLine($"Full Name: {FirstName} {LastName}");
        }
    }
    public void PrintPdf()
    {
        Console.WriteLine("Generating PDF using IronPDF.");
        string content = $@"<!DOCTYPE html>
<html>
<body>
<h1>Hello, {FirstName}!</h1>
<p>First Name: {FirstName}</p>
<p>First Name: {LastName}</p>
</body>
</html>";
        // Create a new PDF document
        var pdfDocument = new ChromePdfRenderer();
        pdfDocument.RenderHtmlAsPdf(content).SaveAs("person.pdf");
    }
    private void LogError(string errorMessage)
    {
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine($"Error: {errorMessage}");
        Console.ResetColor();
    }
}
class Program
{
    public static void Main()
    {
        // Create an  instance of the Person class
        Person person = new Person();
        // Attempt to display the full name
        person.DisplayFullName();
        // Set the properties
        person.FirstName = "John"; // string literal
        person.LastName = "Doe"; // string literal
        // Display the full name again
        person.DisplayFullName();
        Console.WriteLine("Pause for 2 seconds and Print PDF");
        Thread.Sleep(2000); // Pause for 2 seconds and Print PDF
        // Print the full name to PDF
        person.PrintPdf();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

このプログラムでは、Thread.SleepおよびIronPDFの使用方法を示します。 コードは最初に人物のfirstnameおよびlastnameプロパティを検証します。 次に、その人のフルネームをコンソールに印刷します。 次に、Thread.Sleepを使用して2秒待機し、その後 PrintPdfを使用してfullnameをPDFに出力します。()` method と IronPDF ライブラリ。

出力

C# Thread Sleep メソッド (開発者向け動作説明): 図3 - コンソール出力: Thread.Sleep を使用して IronPDF で PDF を生成する様子の表示。

生成されたPDF

C# スレッドスリープメソッド(開発者向けの説明):図4 - 作成された出力PDF。

ライセンス(無料トライアル利用可能)

使用するには IronPDF. 以下のキーをappsettings.jsonファイルに挿入してください。

"IronPdf.LicenseKey": "your license key"
"IronPdf.LicenseKey": "your license key"
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'"IronPdf.LicenseKey": "your license key"
VB   C#

試用ライセンスを受け取るには、メールアドレスをご提供ください。 IronPDFのライセンスに関する詳細情報については、以下のURLをご覧ください。 ライセンスページ.

結論

Thread.Sleep ()C#におけるmethodは、スレッドのタイミングと同期を管理するための基本的なツールとして機能します。 それが遅延を導入するためのシンプルで効果的なソリューションである一方で、開発者はその限界とアプリケーションのパフォーマンスへの影響に注意すべきです。 日本語に翻訳します。

現代のC#開発が進化する中で、Task.Delayのような代替アプローチを探ることは()非同期プログラミングは、レスポンシブで効率的なマルチスレッドアプリケーションを作成するために不可欠となります。 スレッド同期の微妙な違いを理解し、適切なツールを選択することで、開発者はダイナミックな環境で並行処理のニーズを満たす堅牢で効率的なソフトウェアを作成できます。

さらに、私たちは次の技術の多用途性を観察しました IronPDF PDF文書の生成におけるライブラリと、それが Thread.Sleep メソッドとどのように使用されるかについて。 IronPDFの使用方法に関するさらに多くの例については、コード例をご覧ください ページ.

< 以前
C# Null 条件演算子(開発者向けの動作説明)
次へ >
C# 定数(開発者向けの機能説明)

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

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