2

私は最近、JSON と ExtJs フレームワークを使い始めました。例として次のコードを見つけました。

これを使用して、フロントエンドから情報を取得します。

object updatedConfig = JavaScriptConvert.DeserializeObject(Request["dataForm"]);

次に、例では次のことを行います。

JavaScriptObject jsObj = updatedConfig as JavaScriptObject;

「as」キーワードがそのように使用されているのを見たことがありません。これは、updatedConfig 変数を JavaScriptObject として明示的にボックス化する別の形式ですか、それともこれについて理解していないことがありますか?

ありがとう

4

4 に答える 4

4

これは安全なキャストとして知られています。つまり、ある型から別の型にキャストしようとし、キャストが失敗した場合はnull、をスローする代わりに戻りますInvalidCastException

as" " キャストと通常の静的キャストの違いを処理するために、実際には 2 つの別個の IL 命令があります。次の C# コードには、両方のタイプのキャストが含まれています。

using System;

class Program
{
    static void Main()
    {
        Object o = null;

        String s0 = (String)o;
        String s1 = o as String;
    }
}

最初のキャストはcastclassIL 命令を使用し、2 番目のキャストはそのisinst命令を使用します。

詳細な説明については、CLR でのキャストと「as」キーワードの使用を参照してください。

于 2009-03-04T12:02:41.887 に答える
3

as キーワードは、C# でオブジェクトをキャストするより安全な方法です。

SomeType a = obj as SomeType;

objが type の場合SomeTypeobjその型にキャストされることを意味します。objが null または type でない場合SomeType、 a は null になります。

于 2009-03-04T12:02:34.853 に答える
0

as キーワードのもう 1 つの利点は、型をキャストできない場合にコンパイル時例外をスローすることです。ただし、as (キャスト) は実行時まで壊れません。

于 2009-03-04T12:18:18.747 に答える