アンセーフ コードとポインター (C# プログラミング ガイド)Unsafe Code and Pointers (C# Programming Guide)

タイプ セーフとセキュリティを維持するために、既定では C# はポインター演算をサポートしません。To maintain type safety and security, C# does not support pointer arithmetic, by default. ただし、unsafe キーワードを使用すれば、ポインターを使用できる unsafe コンテキストを定義できます。However, by using the unsafe keyword, you can define an unsafe context in which pointers can be used. ポインターの詳細については、「ポインター型 (C# プログラミング ガイド)」を参照してください。For more information about pointers, see the topic Pointer types.

注意

共通言語ランタイム (CLR) では、アンセーフ コードは検査できないコードと呼ばれます。In the common language runtime (CLR), unsafe code is referred to as unverifiable code. C# のアンセーフ コードは、必ずしも危険ではありません。ただ、CLR で安全性を検査できないコードであるというだけです。Unsafe code in C# is not necessarily dangerous; it is just code whose safety cannot be verified by the CLR. そのため CLR は、完全に信頼できるアセンブリ内にある場合にのみ、アンセーフ コードを実行します。The CLR will therefore only execute unsafe code if it is in a fully trusted assembly. アンセーフ コードを使用する場合は、セキュリティ上のリスクやポインター エラーが発生しないように注意してください。If you use unsafe code, it is your responsibility to ensure that your code does not introduce security risks or pointer errors.

アンセーフ コードの概要Unsafe Code Overview

アンセーフ コードには次の特徴があります。Unsafe code has the following properties:

  • メソッド、型、およびコード ブロックをアンセーフとして定義できます。Methods, types, and code blocks can be defined as unsafe.

  • アンセーフ コードでアプリケーションのパフォーマンスが向上することがあります。これは、配列のバインド チェックが削除されるためです。In some cases, unsafe code may increase an application's performance by removing array bounds checks.

  • アンセーフ コードは、ポインターを必要とするネイティブ関数を呼び出すときに必要です。Unsafe code is required when you call native functions that require pointers.

  • アンセーフ コードを使用すると、セキュリティと安定性の面でリスクが生じます。Using unsafe code introduces security and stability risks.

  • C# でアンセーフ コードをコンパイルするには、/unsafe を指定してアプリケーションをコンパイルする必要があります。In order for C# to compile unsafe code, the application must be compiled with /unsafe.

詳細については次を参照してください:For more information, see:

C# 言語仕様C# Language Specification

詳細については、「C# 言語の仕様」を参照してください。For more information, see the C# Language Specification. 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。The language specification is the definitive source for C# syntax and usage.

参照See Also

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