.NET ヘルプ

C# `Using`ステートメント(開発者向けの使用方法)

公開済み 2024年4月3日
共有:

についてusing ステートメントC#におけるこの概念は、特に破棄可能なオブジェクトを扱う際に、リソースを効率的に管理するための基本的な概念です。 このチュートリアルでは、using ステートメントが何であるか、その仕組み、そして特にC#初心者にとってなぜ有益であるかを詳しく解説します。

このガイドの終わりまでには、より良いリソース管理と、よりクリーンで読みやすいコードのために、このステートメントをコードに実装する方法についての確固たる理解が得られるでしょう。 また、議論いたしますusing文でIronPDFを統合する後ほどこの記事の中で述べます。

破棄可能なオブジェクトとIDisposableインターフェイスの理解

using ステートメントに進む前に、ディスポーザブルオブジェクトと IDisposable インターフェースを理解することが重要です。 .NETでは、ファイルハンドル、ネットワーク接続、データベース接続などの多くのリソースは、ガベージコレクタによって管理されていません。

そのようなリソースは、アンマネージドリソースと呼ばれます。 これらのリソースを適切に管理するために、それらをカプセル化するクラスは、単一のメソッドDisposeを含むIDisposableインターフェースを実装します。 このメソッドは、不要になった際に非管理リソースを手動で解放するために呼び出されます。

使用ステートメントの基本

構文と使用法

using ステートメントは、管理されていないリソースを解放するプロセスを簡素化します。 それは、破棄可能なオブジェクトがスコープ外になるとすぐにDisposeメソッドが呼び出されることを保証します。

using ブロックを、安全ゾーンと考えてください。これにより、リソースが使用後に自動的にクリーンアップされることが保証されます。 使用例を示す基本的な例を以下に示します。

using (StreamReader reader = new StreamReader("file.txt"))
{
    // You can read the file here
}
using (StreamReader reader = new StreamReader("file.txt"))
{
    // You can read the file here
}
Using reader As New StreamReader("file.txt")
	' You can read the file here
End Using
VB   C#

上記の例では、StreamReaderIDisposableインターフェースを実装するクラスです。 using ステートメントは、制御が中括弧で定義されたスコープから出るときに、readerDispose メソッドが自動的に呼び出されることを保証します。

動作方法

ディスポーザブルオブジェクトを using ステートメントでラップする場合、それは本質的に try ブロックと finally ブロックに変換されます。 finally ブロックでは、例外が発生した場合でもリソースが適切に解放されるように、Dispose メソッドが呼び出されます。

using ブロック内のコードがエラーを投げる場合でも心配しないでください。 Disposeメソッドは依然として呼び出され、リソースが安全に解放されることを保証します。

Using ステートメントの高度な概念

複数のリソースの管理

単一の using ステートメント内で複数のディスポーザブルオブジェクトを管理することができます。 このアプローチは、コードをよりクリーンに保ち、すべてのリソースが正しく解放されることを保証します。

using (SqlConnection conn = new SqlConnection(connString))
using (SqlCommand cmd = new SqlCommand(query, conn))
{
    // Work with your database here
}
using (SqlConnection conn = new SqlConnection(connString))
using (SqlCommand cmd = new SqlCommand(query, conn))
{
    // Work with your database here
}
Using conn As New SqlConnection(connString)
Using cmd As New SqlCommand(query, conn)
	' Work with your database here
End Using
End Using
VB   C#

エイリアス指示の使用

コア機能であるusingステートメントに加えて、C#はusingエイリアスディレクティブやusingブロック内でのローカル変数の効率的な処理などの機能も提供しており、リソース管理をさらに簡素化し、コードの可読性を向上させます。

外部ライブラリを使用したりクラス名の競合に対処したりする場合、コードが乱雑になり、追跡が困難になることがあります。 usingエイリアス指示 は、名前空間やクラスにより読みやすい、または短いエイリアスを割り当てることを可能にすることで助けになります。

異なる名前空間に存在するが同じ名前を持つ2つのクラスを扱うシナリオを考えてみましょう。 簡単に区別するために using 別名指示文を使用できます:

using Project = FirstNamespace.Project;
using ExternalProject = SecondNamespace.Project;
// Now you can use Project and ExternalProject in your code to refer to the specific classes without confusion.
using Project = FirstNamespace.Project;
using ExternalProject = SecondNamespace.Project;
// Now you can use Project and ExternalProject in your code to refer to the specific classes without confusion.
Imports Project = FirstNamespace.Project
Imports ExternalProject = SecondNamespace.Project
' Now you can use Project and ExternalProject in your code to refer to the specific classes without confusion.
VB   C#

使用宣言

C# 8.0で導入されたusing宣言は、コードをより簡潔にする構文上の糖分です。使い捨てオブジェクトを中括弧で囲む代わりに宣言すれば、宣言されたスコープの最後で破棄されます:

using StreamReader reader = new StreamReader("file.txt");
// Use reader here
// It will be disposed of here automatically
using StreamReader reader = new StreamReader("file.txt");
// Use reader here
// It will be disposed of here automatically
Using reader As New StreamReader("file.txt")
	' Use reader here
	' It will be disposed of here automatically
End Using
VB   C#

カスタムクラスとIDisposable

カスタムクラスにIDisposableインターフェースを実装することにより、usingステートメントを適用することもできます。 これは、クラスが一つ以上のリソースを管理する責任を負う場合に特に役立ちます。

public class ResourceHolder : IDisposable
{
    public void Dispose()
    {
        // Release your resources here
    }
}
public class ResourceHolder : IDisposable
{
    public void Dispose()
    {
        // Release your resources here
    }
}
Public Class ResourceHolder
	Implements IDisposable

	Public Sub Dispose() Implements IDisposable.Dispose
		' Release your resources here
	End Sub
End Class
VB   C#

あなたのクラスが IDisposable インターフェースを実装している場合、他の破棄可能なオブジェクトと同様に using ステートメント内で使用することができます。

IronPDFの紹介:C# PDFライブラリ

C# 使用ステートメント(開発者向けの動作方法):図1

IronPDF for .NET PDFジェネレーションは、C#をコアにして設計された、.NETプラットフォーム向けの包括的なPDF生成ライブラリです。 IronPDFが簡単なPDF作成プロセスHTML、CSS、画像、JavaScriptを活用し、効率的なPDFレンダリングを実現します。

これは包括的なPDF操作をサポートし、他のAPIでは通常複雑なタスクを簡素化します。PDFの作成プロセスを簡素化するだけでなく、Web、サーバー、コンソール、デスクトップアプリケーションなど、幅広いアプリケーションタイプに互換性を与えます。

IronPDFのインストール

IronPDFをプロジェクトに追加する最も効率的な方法は、NuGetパッケージマネージャーを使用することです。 Visual Studioでプロジェクトを開き、「ソリューション エクスプローラー」に移動し、「依存関係」を右クリックして、「NuGet パッケージの管理」を選択します。ここで「IronPDF」を検索し、数回クリックするだけでパッケージをインストールできます。

C# 使用文 (開発者向けの動作方法): 図2

Usingステートメントを使用したIronPDFの使用例

C#のリソース管理におけるusingステートメントに戻しましょう。 以下は、HTMLコンテンツからPDFを生成するためにIronPDFを使用する方法を示す簡単なコード例であり、リソースの適切な破棄を保証するためにusingステートメントを使用しています:

using IronPdf;
class Program
{
    static void Main(string [] args)
    {
        var renderer = new ChromePdfRenderer();
        // Generate a PDF from HTML string and save it
        using (var document = renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF!</h1>"))
        {
            document.SaveAs("HelloIronPDF.pdf");
        }
        // The using statement ensures that resources are cleaned up correctly
    }
}
using IronPdf;
class Program
{
    static void Main(string [] args)
    {
        var renderer = new ChromePdfRenderer();
        // Generate a PDF from HTML string and save it
        using (var document = renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF!</h1>"))
        {
            document.SaveAs("HelloIronPDF.pdf");
        }
        // The using statement ensures that resources are cleaned up correctly
    }
}
Imports IronPdf
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()
		' Generate a PDF from HTML string and save it
		Using document = renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF!</h1>")
			document.SaveAs("HelloIronPDF.pdf")
		End Using
		' The using statement ensures that resources are cleaned up correctly
	End Sub
End Class
VB   C#

C# の Using ステートメント(開発者向けの機能解説):図 3

ライセンス

C# 使用文 (開発者向けの仕組み): 図4

IronPDFは、さまざまなさまざまなニーズに対応するライセンスオプションさまざまなチームサイズやデプロイメントニーズに対応し、あらゆる規模の開発者や組織に対する柔軟性を確保します。

ライセンスの価格は$749から始まります。 それは、IronPDF機能の無料トライアル購入前に機能を試すことができます。

結論とベストプラクティス

usingステートメントは、効率的なリソース管理とクリーンなコードを保証するC#の強力な機能です。 ファイルストリーム、データベース接続、またはシステムリソースを消費するその他のローカル変数やオブジェクトを扱う際に特に有用です。

Disposeメソッドを自動的に呼び出すことで、リソースリークを防ぎ、アプリケーションがスムーズに稼働することに役立ちます。 オブジェクトが IDisposable インターフェースを実装している場合は、常に using ステートメントを使用することを忘れないでください。

IronPDFは、金銭的な負担なく製品をお試しいただけるよう、以下の方法でご招待いたします。IronPDFの無料トライアル. その性能に満足された場合、ライセンスの取得は $liteLicense から始まります。

< 以前
C# TryParse(開発者向けの仕組み)
次へ >
C# レコード(開発者向けの仕組み)