.NET ヘルプ

C# の AS(開発者向けの仕組み)

公開済み 2023年11月22日
共有:

C#でのプログラミングは、さまざまな種類のデータを扱うことが多い。 時々、特定のタイプのオブジェクトであるか確認する必要がある、またはそのタイプに変換を試みる必要があります。 IronPDF for .NET comes into play. It’s designed to help developers generate, manipulate, and manage PDF documents within .NET applications. With IronPDF for .NET, you can create PDFs from HTML, CSS, JavaScript, ASPX, and MVC view engines, and even convert existing documents to PDF seamlessly. Whether you need to merge PDFs, add watermarks, or extract text and images, IronPDF for .NET offers a robust and user-friendly API.

IronPDF for Java offers similar functionality but is tailored for Java applications. It supports converting HTML to PDF, merging PDF documents, and manipulating text and images within PDF files.

IronPDF for Python provides an easy-to-use interface for Python developers looking to incorporate PDF capabilities into their applications. It enables HTML to PDF conversion, PDF merging, and other essential PDF operations.

IronPDF for Node.js allows Node.js developers to generate and manipulate PDFs effortlessly. It supports HTML to PDF conversion, text and image extraction, and other functionalities critical for modern web applications.

Opting for any version of IronPDF allows developers to bypass complicated coding processes and focus on building their core applications. Additionally, the detailed documentation and comprehensive support from Iron Software guarantee a smooth integration and implementation process.as 演算子 キーワード役に立つ。 その近縁であるis operatorとともに、型テストと変換に役立ちます。 このチュートリアルでは、この演算子の詳細とその使用例を探求します。

as演算子を理解する

as 演算子の基本

C#のas演算子キーワードは、互換性のある参照型やnull可能な型の間で特定の変換を実行するために使用される二項演算子です。次のコードは簡単なデモンストレーションです:

object myObj = "Hello, World!";
string myStr = myObj as string;
object myObj = "Hello, World!";
string myStr = myObj as string;
Dim myObj As Object = "Hello, World!"
Dim myStr As String = TryCast(myObj, String)
VB   C#

上記のコードでは、myObjobject 型のオブジェクトです。(C# におけるすべての型の基本型). コンパイル時にはその基底型が不明です。as 演算子は myObjstring として扱おうと試みるために使用されます。 成功した場合、myStr は文字列の値を持ちます。 それ以外の場合は、null 値を保持します。

明示的なキャストとはどのように異なるのですか?

両方の as演算子 と明示的なキャストは似た目的に役立ちますが、重要な違いがあります。 明示的なキャストが失敗すると、例外がスローされます。 一方で、as 演算子の型変換の試みが失敗した場合、この演算子は例外を発生させる代わりに null value を返します。 次のコード例でこれを理解しましょう:

object someValue = 12345;

// Using explicit cast
string castResult;
try {
    castResult = (string)someValue; // This will throw an exception since the cast fails.
}
catch(Exception ex) {
    castResult = null;
}

// Using the as operator
string asResult = someValue as string; // No exception, but asResult will be null since the cast fails.
object someValue = 12345;

// Using explicit cast
string castResult;
try {
    castResult = (string)someValue; // This will throw an exception since the cast fails.
}
catch(Exception ex) {
    castResult = null;
}

// Using the as operator
string asResult = someValue as string; // No exception, but asResult will be null since the cast fails.
Dim someValue As Object = 12345

' Using explicit cast
Dim castResult As String
Try
	castResult = DirectCast(someValue, String) ' This will throw an exception since the cast fails.
Catch ex As Exception
	castResult = Nothing
End Try

' Using the as operator
Dim asResult As String = TryCast(someValue, String) ' No exception, but asResult will be null since the cast fails.
VB   C#

以下に示すように、as 演算子を使用すると、実行時エラーを回避できるため、より安全な場合が多いです。

is演算子との接続

通常、as 演算子 は、変換を試みる前に型テストのために is 演算子 と併用されます。 is 演算子は、指定されたオブジェクトが指定された型であるかどうかを確認し、それが型に一致する場合はtrueを返し、それ以外の場合はfalseを返します。

以下のコード例はこれを示しています:

object testObject = "This is a string";

if(testObject is string) {
    string result = testObject as string;
    Console.WriteLine(result);
} else {
    Console.WriteLine("Not a string");
}
object testObject = "This is a string";

if(testObject is string) {
    string result = testObject as string;
    Console.WriteLine(result);
} else {
    Console.WriteLine("Not a string");
}
Dim testObject As Object = "This is a string"

If TypeOf testObject Is String Then
	Dim result As String = TryCast(testObject, String)
	Console.WriteLine(result)
Else
	Console.WriteLine("Not a string")
End If
VB   C#

C#の後のバージョンでパターンマッチングが導入されたことにより、型テストが通過した場合、is演算子は特定のアクションを実行することもできます。 これにより、as 演算子を使用する必要が減ることがよくあります。

特別なケースと考慮事項を詳しく掘り下げる

ヌル許容型の変換

以下の内容を日本語に翻訳します:

as オペレーターが非常に価値のある特別なケースの一つは、nullable value types(値型にnullを許容する型)です。(intdoubleなど。)null 値 を割り当てることはできません。 ただし、これらを nullable にすることで、null を割り当てることができます。 as 演算子を使用して、null 許容値型への変換を試みることができます。

int? nullableInt = 10;
object objInt = nullableInt;
int? resultInt = objInt as int?;
int? nullableInt = 10;
object objInt = nullableInt;
int? resultInt = objInt as int?;
Dim nullableInt? As Integer = 10
Dim objInt As Object = nullableInt
Dim resultInt? As Integer = CType(objInt, Integer?)
VB   C#

参照変換およびユーザー定義変換

as 演算子は、参照変換の両方をサポートします。(関連参照型間)およびユーザー定義の変換。 ユーザー定義の型変換とは、クラス内で特殊な型変換メソッドを使用して定義される型変換のことです。

ユーザー定義の変換の次のコードを考慮してください:

class Sample {
    public static implicit operator string(Sample s) {
        return "Converted to String";
    }
}

Sample sampleObject = new Sample();
string conversionResult = sampleObject as string;
class Sample {
    public static implicit operator string(Sample s) {
        return "Converted to String";
    }
}

Sample sampleObject = new Sample();
string conversionResult = sampleObject as string;
Friend Class Sample
	Public Shared Widening Operator CType(ByVal s As Sample) As String
		Return "Converted to String"
	End Operator
End Class

Private sampleObject As New Sample()
Private conversionResult As String = TryCast(sampleObject, String)
VB   C#

ここでは、ユーザー定義の変換メソッドにより、Sample型のオブジェクトをstringとして扱うことができます。

適用されない場合

as 演算子は値型には使用できないことを覚えてください。(nullable 値型を扱う場合を除いて)明示的なメソッドを含むユーザー定義の変換を使用します。

as 演算子を使用した高度なシナリオ

asを用いたボクシングとアンボクシング

ボクシングとは、値型インスタンスをオブジェクト参照に変換するプロセスです。 これは、すべての値タイプが暗黙的にobjectから継承されているため可能です。 値型をボックス化する際には、それを object の中にラップします。

ボクシング変換のための以下のコードを検討してください:

int intValue = 42;
object boxedValue = intValue;
int intValue = 42;
object boxedValue = intValue;
Dim intValue As Integer = 42
Dim boxedValue As Object = intValue
VB   C#

ここでは、intValueobject にボックス化されます。

アンボクシングとはボクシングの逆のプロセスであり、つまり object から値型を抽出することです。 「as」演算子は、特に「object」が期待している値の型を保持しているかどうか確信が持てない場合に、安全に値をボックス化解除するために使用できます。 ボックス解除が失敗した場合、結果の式は null になります。

次の例を考慮してください:ボックス化解除の変換

object obj = 42;
int? result = obj as int?;
object obj = 42;
int? result = obj as int?;
Dim obj As Object = 42
Dim result? As Integer = CType(obj, Integer?)
VB   C#

配列の操作

配列はC#の参照型です。 時々、特定のタイプの配列であるかどうかを判定し、そのobjectを操作する必要があります。 ここでも as 演算子が役立ちます。

次のコードを考慮してください:

object[] arrayObject = new string[] { "one", "two", "three" };
string[] stringArray = arrayObject as string[];
object[] arrayObject = new string[] { "one", "two", "three" };
string[] stringArray = arrayObject as string[];
Dim arrayObject() As Object = New String() { "one", "two", "three" }
Dim stringArray() As String = TryCast(arrayObject, String())
VB   C#

上記のコードでは、arrayObject はオブジェクトの配列ですが、実際には文字列を保持しています。 as 演算子を使用すると、それを文字列の配列として安全に扱うことができます。

as`とLINQの組み合わせ

統合言語クエリ(LINQ - マイクロソフトドキュメント)C#の強力な機能であり、SQLに似た方法でコレクションをクエリすることができます。 時々、コレクション内の異なるタイプのオブジェクトを取得し、その特定のタイプをフィルタリングしたい場合があります。その際には、as 演算子が非常に便利です。

例えば、文字列と整数の両方を含むオブジェクトのリストを考えてみましょう。 文字列だけを取得したい場合は、LINQと組み合わせてas演算子を使用することができます:

var mixedList = new List<object> { "Hello", 42, "World", 100 };
var stringValues = mixedList
    .Select(item => item as string)
    .Where(item => item != null)
    .ToList();
var mixedList = new List<object> { "Hello", 42, "World", 100 };
var stringValues = mixedList
    .Select(item => item as string)
    .Where(item => item != null)
    .ToList();
Dim mixedList = New List(Of Object) From {"Hello", 42, "World", 100}
Dim stringValues = mixedList.Select(Function(item) TryCast(item, String)).Where(Function(item) item IsNot Nothing).ToList()
VB   C#

Iron Suiteの統合

C#開発者向けSuiteソリューション は、高品質なツールのスイートであり、C#開発者がPDF操作、Excel処理、光学式文字認識などの機能をシームレスに統合できるようにします。(OCR (光学式文字認識))およびバーコード生成と読み取り。 これらのツールは、以前に議論した as および is 演算子と同様に、堅牢なアプリケーションを構築する際に開発者の効率を高めるために非常に重要です。

IronPDF

C# AS(開発者向けの動作説明)図1 - IronPDF for .NET: C# PDF ライブラリ

IronPDFはC#アプリケーション内でPDFファイルの生成、操作、読み込みを可能にします。 私たちのトピックに関連して、データを保持する参照型があり、そのデータをレポートやドキュメントに変換したいと考えているとします。 IronPDFは、アプリケーションの出力を型変換に似た方法で、整った形式のPDFドキュメントに変換することができます。

IronXL

IronXL は、.NET、Python、および他のプログラミング言語で Excel 形式の読み取り、書き込み、編集を可能にするライブラリです。ユーザーは、Microsoft Excel を使わずに、スプレッドシートをプログラムで管理することができます。主要な機能には、Excel ファイルの作成、既存ファイルの読み込み、セルの書き換え、グリッドデータの操作などが含まれます。データ分析、自動化、レポート生成のために最適なツールです。

IronXL の特長は、使いやすさと柔軟性にあります。どのレベルのプログラマーでも、数行のコードで Excel 操作を実行できます。開発者は、RBGA カラー、フォントスタイル、ボーダースタイルなど、ビジュアル要素のカスタマイズも簡単に行えます。

以下のプラットフォームで使用可能です:

  • IronXL for .NET
  • IronXL for Python

C# AS(開発者のための機能説明) 図2 - IronXL for .NET: C# Excelライブラリ

多くのソフトウェアアプリケーションにおいて、Excelファイルを扱うことは頻繁に求められる要件です。 IronXL.Excel操作のための`。開発者は、Office Interopに依存することなく、Excelスプレッドシートを読み取り、編集し、作成する能力を持つことができます。型変換に関する私たちの議論の文脈では、IronXLを、データ構造やデータベースエントリをC#でExcelフォーマットにシームレスに変換するツールとして考えてください。

IronOCR

IronOCR(IronOCR) は、高精度の光学文字認識 (Optical Character Recognition, OCR) ライブラリです。以下はその主な機能と利点です。

  • 高精度: IronOCR は、画像やPDFから文字情報を高精度で抽出します。複雑なフォントや手書き文字にも対応しています。
  • 多言語対応: IronOCR は、多数の言語に対応しており、グローバルなプロジェクトに最適です。
  • 簡単な統合: .NET アプリケーションに簡単に統合できるため、開発者の手間を大幅に削減します。
  • 豊富なフォーマットサポート: PDF、TIFF、JPG、PNG など、さまざまなファイル形式をサポートしています。
  • カスタマイズ可能な OCR 設定: パフォーマンスや精度を最適化するために、様々な設定を調整できます。

サポートされている開発プラットフォームには、.NET Framework、.NET Core、Xamarin などがあります。 IronOCR(IronOCR) は、開発者が迅速かつ効率的にOCR機能を統合するための強力なツールです。

さらに詳しい情報やデモ版のダウンロードは、公式ウェブサイト https://ironsoftware.com からご覧いただけます。

C# AS(開発者向けの操作方法)図3 - IronOCR for .NET: C# OCRライブラリ

IronOCRによる光学式文字認識`については、開発者が画像からテキストを読み取り、解釈することを可能にする光学文字認識ツールです。 私たちのチュートリアルに橋渡しすると、オブジェクトを変換するのと似ています。(この場合、画像)より具体的なタイプへ(string またはテキストデータ)高度な認識能力を使用して。

IronBarcode

C# として(開発者向けの作業方法) 図4 - IronBarcode for .NET: C# バーコードライブラリ

多くの商用アプリケーションでは、バーコードの取り扱いが不可欠です。 バーコード処理のためのIronBarcodeツール`。開発者がC#アプリケーションでバーコードを生成、読み取り、デコードすることを支援します。 型変換に関する我々の議論に関連して、「IronBarcode」は視覚的なバーコードデータを変換するツールと見なすことができます。(オブジェクトの形式)より具体的で使用可能なデータ型(例えば、文字列や製品の詳細)に変換します。

結論

C# として(開発者向けの動作方法) 図5 - Iron Suite for .NET

各製品内のIron Suiteの提供製品の柔軟性とパワーを示しており、特に型変換や型チェックに関する議論に結びつけると、C#の優れた点が際立ちます。 これらのツールは、as演算子やis演算子のように、開発者にデータを効率的に変換および処理する機能を提供します。

これらのツールのいずれかをプロジェクトに統合することを検討している場合、各製品のライセンスは$749から始まることに注意してください。また、各製品はSuite Toolsの無料トライアル. 包括的なソリューションを求めている方には、Iron Suite が魅力的なオファーを提供します。あなたはIron Suiteライセンスを取得するわずか2つの製品の価格で。

< 以前
C# フォーム (開発者にとっての動作方法)
次へ >
C# データ型 (開発者向けの動作説明)