0

ここでMVCで頭を割る。

私は自分のモデルを次のように書きました:

public class AboutModel
{
    public string AboutText { get; set; }
}

と私のコントローラとして:

    public ActionResult About()
    {
        var model = new AboutModel { AboutText = "We build better software."};
        return View(model);
    }

new行を次のように変更しました。

    AboutModel model = new AboutModel { AboutText = "We build better software."}

そして最後に:

   dynamic model = new AboutModel { AboutText = "We build better software."}

すべてが私のもので完全にうまくいくようですView

@model MvcApp.Models.AboutModel

<p>@if (Model != null)
{
    @Model.AboutText
}</p>

私の 3 つのモデルの初期化に違いはありますか?

4

2 に答える 2

2

var model = new AboutModel変数の型を事前に指定する必要がないという点で、暗黙的に型指定された変数です。コンパイラは、= の後に来るものによってそれを推測できます。(この場合AboutModel)

暗黙的に型指定された変数を使用する場合は、値を指定する必要があります。次に例を示します。

var model = new AboutModel;

コンパイルされますが、

var model;

しません。

AboutModel model = new AboutModel変数宣言で型を指定していますが、同じ行で値を指定している場合は実際には必要ありません。宣言時に型を指定する場合、値を指定する必要はありません。例えば:

AboutModel model;

コンパイルします。

キーワードは、dynamicコンパイル時に型チェックされないことを意味します。この場合も違いはありません。

于 2013-05-16T21:46:16.723 に答える
0

いいえ、3 つのケースすべてのランタイム タイプは ですMvcApp.Models.AboutModel

@model最初の 2 つのケースでは型をそのまま渡し、最後のケースでは動的として渡します。これは、ディレクティブで定義されたビューの型にキャストしようとします。

「動的性」が必要でない限り、明確にするために強力な型の初期化の1つに固執します(その場合、@model型も設定する必要がありdynamicます)。

于 2013-05-16T21:44:39.560 に答える