unsafe コードとポインター (C# プログラミング ガイド)

型の安全性とセキュリティを維持するために、既定では C# はポインター演算をサポートしません。 ただし、unsafe キーワードを使用すると、ポインターを使用できる unsafe コンテキストを定義できます。 ポインターの詳細については、「ポインター型 (C# プログラミング ガイド)」を参照してください。

注意

共通言語ランタイム (CLR) では、アンセーフ コードは検査できないコードと呼ばれます。 C# のアンセーフ コードは、必ずしも危険ではありません。ただ CLR で安全性を検査できないコードであるというだけです。 そのため CLR は、完全に信頼できるアセンブリ内にある場合にのみ、アンセーフ コードを実行します。 アンセーフ コードを使用する場合は、セキュリティ上のリスクやポインター エラーが発生しないように注意してください。

アンセーフ コードの概要

アンセーフ コードには次の特性があります。

  • メソッド、型、およびコード ブロックは、unsafe として定義できます。

  • アンセーフ コードでアプリケーションのパフォーマンスが向上することがあります。これは、配列のバインド チェックが削除されるためです。

  • アンセーフ コードは、ポインターを必要とするネイティブ関数を呼び出すときに必要です。

  • アンセーフ コードを使用すると、セキュリティと安定性の面でリスクが高くなります。

  • C# でアンセーフ コードをコンパイルするには、/unsafe を指定してアプリケーションをコンパイルする必要があります。

関連項目

詳細については、次のトピックを参照してください。

C# 言語仕様

詳細については、「C# 言語仕様」を参照してください。 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。

参照

概念

C# プログラミング ガイド