9

最近ブレインベンチテストを受けて高得点を取ったのですが、難しい問題がいくつかありました。英語が私の母国語ではないからかもしれません...質問の1つは次のとおりです。

型安全性を説明しているのは次のうちどれですか?

  1. CLR で参照型と値型のセキュリティを確保するために使用されるプログラミング構造
  2. 管理されていないアクセスを許可しないことによるメモリ リークからの保護
  3. 型が自身の AppDomain 外のメモリにアクセスできないことを保証する CLR 固有の機能
  4. 厳密な名前のキーを使用してアセンブリとその型を保護するために作成されたメカニズム
  5. 割り当てられたオブジェクトが常に互換性のある方法でアクセスされるという保証を扱う概念

1か5だと思いますが、とにかく奇妙に聞こえます:(

どう思いますか?

4

7 に答える 7

10

タイプセーフはセキュリティとは何の関係もないので、実際には選択肢5だと思います。

于 2009-05-29T21:46:23.893 に答える
7

型安全性は、[Robin Milner][1] の ML プログラミングに関する有名なスローガンである「適切に型付けされたプログラムは失敗できない」を実現するために設計された言語の機能です。

このスローガンは、正しく理解する前に解凍する必要がありますが、基本的には、コンストラクターまたは関数に適用されたパラメーターに互換性のない型の値が含まれている場合など、実行時の型エラーが原因でプログラムが失敗しないことを意味します。

整数、整数関数を第 1 級値として使用し、関数の抽象化と関数の部分適用を許可し、通常の整数算術演算子を 2 項関数として定義する言語を考えてみましょう。型安全性のプロパティは、加算演算子への両方の引数が関数ではなく整数に還元される式であることを保証するためにコンパイラが強制するものです。プログラムが適切に型付けされている場合、コンパイラはそのプログラムの実行可能オブジェクトを発行できます。それ以外の場合は、プログラミング エラーのフラグを立てて中止します。

于 2009-05-29T22:09:29.213 に答える
4

以下の msdn リンクによると、 http: //msdn.microsoft.com/en-us/library/hbzz1a9a.aspx

タイプ セーフ コードは、アクセスが許可されているメモリ位置にのみアクセスします。(この説明では、タイプ セーフは具体的にはメモリ タイプ セーフを指し、より広い意味でのタイプ セーフと混同しないでください。) たとえば、タイプ セーフ コードは、別のオブジェクトのプライベート フィールドから値を読み取ることができません。明確に定義された許容可能な方法でのみ型にアクセスします。

于 2013-03-06T20:32:46.833 に答える
1

他の人が言ったように、選択肢5...

一般に、.NET の場合は、クロスランゲージとタイプ セーフを可能にする Common Type System (CTS) を確認してください。

チェックアウト: http://en.wikipedia.org/wiki/Type_safety ...

于 2009-05-29T22:45:57.597 に答える
1

選択肢 5 割り当てられたオブジェクトが常に互換性のある方法でアクセスされるという保証を扱う概念

型安全性は、Foo を作成するときにそれを Bar として扱うことができないようにすることを扱います。型がわからない場合 (または保証されていない場合)、記述したコードが期待どおりに機能しない可能性があります。

于 2009-05-29T21:49:37.867 に答える
1

タイプ セーフな言語は、たとえば int 型の length() など、型に対して互換性のないメソッドを呼び出さないことを (コンパイル時に) 確認します。タイプセーフでない言語は、実行時にそれを理解します。というわけでチョイス5。

于 2009-05-29T21:49:58.990 に答える
0

オプション#5です。型安全性は保証であり、具体的なものではありません。アセンブリが安全でないコードを使用してアンマネージ呼び出し (PInvoke) を実行する場合など、.NET コードがタイプ セーフではない可能性があります。JIT 中に、jit される型が実際にタイプ セーフであることを検証するプロセスが実行されます。このプロセスに関する詳細はわかりませんが、jitted 型が渡された場合、それは検証可能な形で安全であると見なされます。

于 2009-05-29T21:51:05.007 に答える