.NET ヘルプ

C# 参照渡し(開発者向けの仕組み)

公開済み 2024年8月13日
共有:

イントロダクション

プログラミングの世界では、高性能のコードを構築するためには、効果的なメモリ管理とデータ操作が不可欠な要素です。 効果的でエラーのないコードを書くには、データがどのように送信されましたC#のような言語におけるメソッドと関数の間に。 この手順において重要な概念の一つが「参照渡し(pass by reference)」です。この投稿では、C#における参照渡しの意味と、その適切な使用シナリオについて探っていきます。

C#参照渡しの使い方

  1. ref パラメーターを持つメソッドを定義する。

  2. 変数を初期化する。

  3. メソッドをRefキーワードで呼び出します。

  4. メソッド内の変数を変更する。

  5. メインメソッドの変更を観察する。

  6. もう一つのメソッドを定義して、アウトパラメータでPDFを生成します。

  7. アウトメソッドを初期化して呼び出す。

参照渡しC#とは何ですか?

参照を利用してパスするとは、 C# で引数を関数やメソッドに送る方法の一つで、値のコピーではなく、呼び出されたメソッドの初期変数への参照を与えることです。 これは、メソッド内でパラメータに加えられた変更が、メソッド外の初期変数にも影響を与えることを意味します。

C# の値型変数(intやfloat、boolなど。)通常、値で提供され、参照パラメーターによってメソッドに変数の値のコピーが渡されます。 それにもかかわらず、ref キーワードを使用して、コンパイラに引数を参照渡しするよう指示できます。

ref キーワードの使用

C#では、refキーワードを使用して参照渡しで渡される参照パラメータについて議論することができます。 ref キーワードを使用して参照で渡されたパラメータに対して行われた変更は、元の変数に影響します。

class Program
{
    static void Main(string[] args)
    {
        int num = 10;
        Console.WriteLine("Before: " + num); // Output: Before: 10
        ModifyByRef(ref num);
        Console.WriteLine("After: " + num);  // Output: After: 20
    }
    static void ModifyByRef(ref int x)
    {
        x = x * 2;
    }
}
class Program
{
    static void Main(string[] args)
    {
        int num = 10;
        Console.WriteLine("Before: " + num); // Output: Before: 10
        ModifyByRef(ref num);
        Console.WriteLine("After: " + num);  // Output: After: 20
    }
    static void ModifyByRef(ref int x)
    {
        x = x * 2;
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

上記の例の ModifyByRef メソッドは、ref キーワードを使用して、整数パラメーター x を参照として受け取ります。 メソッド内部で ref パラメータ x に行われた変更は、ref num を用いてメソッドを呼び出した場合、メソッド外の num 変数に即座に影響を与えます。

out キーワード

out キーワードは、ref と同様に、呼び出し元のメソッドにパラメータを参照渡しするために使用されます。 その結果、メソッドは複数の値を返すことができます。

class Program
{
    static void Main(string[] args)
    {
        int result;
        Calculate(10, 5, out result);
        Console.WriteLine("Result: " + result); // Output: Result: 15
    }
    static void Calculate(int x, int y, out int result)
    {
        result = x + y;
    }
}
class Program
{
    static void Main(string[] args)
    {
        int result;
        Calculate(10, 5, out result);
        Console.WriteLine("Result: " + result); // Output: Result: 15
    }
    static void Calculate(int x, int y, out int result)
    {
        result = x + y;
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

この例では、2つの整数パラメーターxおよびyと、outキーワードで示される追加のパラメーターresultがCalculateメソッドに渡されます。 プロシージャがxとyの合計を計算した後、結果はresultパラメーターに割り当てられます。 結果は out としてタグ付けされているため、メソッドに送信する前に初期化する必要はありません。

参照渡しを使用する場合

効率的で保守しやすいコードを書くには、参照渡しを利用するタイミングを知る必要があります。 以下の状況では参照渡しの複数の値を使用する必要があります:

複数の変数を変更する

パラメータを参照渡しすることは、メソッドが複数の変数を変更する必要があり、その変更をメソッドの外部に反映させる必要がある場合に役立つ可能性があります。 手続きが複数の値を返すのではなく、変数を参照渡しによって送信し、メソッド内で直接変更できます。

static void ModifyMultipleByRef(ref int a, ref int b)
{
    a *= 2;
    b *= 3;
}
static void ModifyMultipleByRef(ref int a, ref int b)
{
    a *= 2;
    b *= 3;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

ビッグデータ構造

不必要なデータの重複を防ぐことで、パラメーターを参照渡しによって渡すことにより、大規模なデータ構造(配列や複雑なオブジェクトなど)を渡す際の効率を向上させることができます。 参照渡しは、巨大なデータ構造を操作する際には注意して使用する必要があります。正しく処理しないと予期せぬ結果を招く可能性があります。

外部コードとの相互運用性

外部ライブラリとやり取りする際やネイティブコードを統合する際には、メソッド定義や外部コードの要件を守るために、引数を参照渡しする必要がある場合があります。

IronPDFとは何ですか?

C#ライブラリ.NETアプリケーションのためのIronPDFプログラマーが .NET アプリケーション内で PDF ドキュメントを作成、修正、および描画できるようにします。 その豊富な機能セットにより、PDFファイルの取り扱いが簡単になります。 HTML、写真、およびその他の形式からPDF文書を作成できます。 テキスト、画像、その他のデータでPDFに注釈を追加する。 既存のPDFドキュメントを分割、結合、編集できます。

IronPDFの主な機能は、変換できる能力ですHTMLからPDFレイアウトとスタイルが保持されるようにします。 この機能は、レポート、請求書、ドキュメントなどのWebベースのコンテンツから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#

IronPDFの機能

テキストと画像アノテーション

IronPDFを使用すると、プログラムでPDFドキュメントにテキスト、画像、注釈を追加できます。 この機能により、PDFファイルに署名、スタンプ、および注釈を付けることができます。

PDFセキュリティ

IronPDFは、印刷、コンテンツのコピー、ドキュメントの編集などのさまざまな権限を指定することができ、PDFドキュメントをパスワードで暗号化することもできます。 これは、PDFファイルへのアクセスを制御し、機密データを保護するのに役立ちます。

インタラクティブPDFフォームの入力

IronPDFは、プログラムでインタラクティブなPDFフォームに記入することができます。 この機能は、ユーザー入力を使用してカスタマイズされた文書を作成したり、フォーム送信を自動化したりするのに役立ちます。

PDFの圧縮と最適化

ファイルサイズを品質を犠牲にすることなく最小限に抑えるために、IronPDFはPDFファイルの圧縮と最適化の両方のソリューションを提供します。 これにより、PDFドキュメントに必要なストレージ量を減らすと同時にパフォーマンスが向上します。

クロスプラットフォーム互換性

IronPDFは、Windows、Linux、macOSなどのプラットフォーム向けの.NETアプリで完璧に機能するように作られています。 ASP.NET、.NET Core、Xamarinなどの人気のある.NETフレームワークと統合されています。

新しいVisual Studioプロジェクトを作成する

Visual Studioでコンソール・プロジェクトを作成するのは簡単だ。 Visual Studio でコンソールアプリケーションを作成するには、次の手順を実行します:

始める前にVisual Studio 開発コンピューターにインストールされていることを確認してください。

新しいプロジェクトを開始

ファイルを選択し、「新規」を選び、最後に「プロジェクト」を選択します。

C# 参照渡し(開発者向けの仕組み):図1

「新しいプロジェクトを作成」ボックスの左側で、希望するプログラミング言語を選択してください(例えば、C#).

コンソールアプリ」または「コンソールアプリ(.NET Core(ドットネット コア))テンプレートは、次のプロジェクトテンプレートのリファレンスタイプのリストから選択できます。

「名前」フィールドにプロジェクト名を入力してください。

C# 参照渡し(開発者向けの仕組み):図2

プロジェクトを保存したい保存場所を選択してください。

「作成」を押して、コンソールアプリケーションプロジェクトを開始します。

C# 参照渡し(開発者向けの仕組み):図3

IronPDFのインストール

Visual Studioツールのツールメニューの下に、Visual Command-Lineインターフェイスを見つけることができます。 NuGet 用のパッケージマネージャを選択します。 パッケージ管理ターミナルタブで、以下のコマンドを入力する。

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
VB   C#

追加の代替案は、パッケージマネージャーを使用することです。 パッケージをソリューションに直接インストールするには、NuGet Package Managerオプションを使用します。 NuGetのウェブサイトの検索ボックスを使用してパッケージを見つけます。 次の例のスクリーンショットは、パッケージマネージャーで「IronPDF」を検索するのがいかに簡単であるかを示しています。

C# 参照渡し(開発者向け解説):図4 - NuGet パッケージ マネージャーから IronPDF をインストールする

上記の画像に関連する検索結果の一覧が表示されています。 ソフトウェアをお使いの機器にインストールできるようにするため、これらの設定を調整してください。

パッケージをダウンロードしてインストールしたら、現在のプロジェクトで使用することができます。

IronPDF を使用した参照渡し

これは、IronPDF の参照渡し機能の使い方の説明です。

using IronPdf;
using System;
class Program
{
    static void Main(string[] args)
    {
        // Create a PDF document
        var pdf = new IronPdf.HtmlToPdf();
        // HTML content to be converted to PDF
        string htmlContent = "<h1>Hello, IronPDF!</h1>";
        // Create a byte array to store the PDF content
        byte[] pdfBytes;
        // Convert HTML to PDF and pass the byte array by reference
        ConvertHtmlToPdf(pdf, htmlContent, out pdfBytes);
        // Save or process the PDF content
        // For demonstration, let's print the length of the PDF content
        Console.WriteLine("Length of PDF: " + pdfBytes.Length);
    }
    static void ConvertHtmlToPdf(IronPdf.HtmlToPdf pdfConverter, string htmlContent, out byte[] pdfBytes)
    {
        // Convert HTML to PDF and store the result in the byte array
        var pdfDoc = pdfConverter.RenderHtmlAsPdf(htmlContent);
        pdfBytes = pdfDoc.BinaryData;
    }
}
using IronPdf;
using System;
class Program
{
    static void Main(string[] args)
    {
        // Create a PDF document
        var pdf = new IronPdf.HtmlToPdf();
        // HTML content to be converted to PDF
        string htmlContent = "<h1>Hello, IronPDF!</h1>";
        // Create a byte array to store the PDF content
        byte[] pdfBytes;
        // Convert HTML to PDF and pass the byte array by reference
        ConvertHtmlToPdf(pdf, htmlContent, out pdfBytes);
        // Save or process the PDF content
        // For demonstration, let's print the length of the PDF content
        Console.WriteLine("Length of PDF: " + pdfBytes.Length);
    }
    static void ConvertHtmlToPdf(IronPdf.HtmlToPdf pdfConverter, string htmlContent, out byte[] pdfBytes)
    {
        // Convert HTML to PDF and store the result in the byte array
        var pdfDoc = pdfConverter.RenderHtmlAsPdf(htmlContent);
        pdfBytes = pdfDoc.BinaryData;
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

この例のConvertHtmlToPdf関数は、HTMLコンテンツ、pdfBytesと呼ばれるバイト配列、およびIronPDF HtmlToPdfオブジェクトの3つのパラメーターを取ります。 out キーワードは、pdfBytes パラメータが参照によって提供され、メソッド内で変更されることを示します。

C# 参照渡し(開発者向けの動作方法):図5

HTMLコンテンツは、ConvertHtmlToPdf関数内でIronPDFを使用してPDFドキュメントとしてレンダリングされ、その結果生成されたバイナリデータはpdfBytes配列に格納されます。

使用しますIronPDF HTMLからPDFへの変換メイン関数で再度、参照を通してpdfBytes配列を渡します。 メソッドの呼び出しに続いて、IronPDF の PDF コンテンツは pdfBytes 配列のメモリ位置に保存されます。

C#参照渡し(開発者向けの仕組み):図6

これは、IronPDF を使用して PDF ドキュメントを効率的に作成および操作し、C# で参照渡しを行う方法を示しています。

結論

まとめると、C#での参照渡しを使用することで、IronPDFは.NETプログラムでPDFドキュメントの作成および修正の機能を大幅に向上させます。 refおよびoutキーワードを効果的に使用することで、開発者は引数を参照で簡単に送信でき、メソッド内で変数やコンテンツを迅速かつ効率的に修正することが可能になります。 IronPDFの広範な機能には、HTMLをPDFに変換する機能、画像に基づいてPDFを生成する機能、および幅広いPDF変更タスクを実行する機能が含まれており、開発者は動的でインタラクティブなPDFドキュメントを簡単に構築できます。

IronPDFは、PDFファイルの分割、結合、注釈、最適化を含む文書処理プロセスを迅速化するために必要なツールとAPIを提供します。 さらに、PDFのクロスプラットフォーム相互運用性により、C#アプリケーションはさまざまな環境でPDF機能を容易に組み込むことができます。 要するに、開発者は、C#の参照渡しの強みとIronPDFの豊富な機能セットを融合させることで、アプリ内でのPDF文書の作成、変更、表示の新しい手段を生み出すことができます。

最後に、Excelを効率的に操作し、PDFを作成し、OCRを実行し、BarCodeを使用することができます。 各ライブラリの価格は $749 からです。. プロジェクトのニーズに合わせた明確なライセンスオプションがあれば、開発者は自信を持って最適なモデルを選択できます。 これらの利点により、開発者は効率的かつ透明性のある方法でさまざまな課題を克服することができます。

< 以前
NServiceBus C# (開発者のための仕組み)
次へ >
EasyNetQ .NET (開発者のための仕組み)