2010-11-18 25 views
0

私はaspxページを持っていますか? string image = "";と書くと、この例外はなくなります。それは非常に奇妙です。私は例外がaspxページのプレゼンテーションと関係があると思う。誰かがなぜこれが起こるのか説明できますか?奇妙な例外

+0

ページがどのようにコンパイルされるかを知りたい場合は、ビルド時にビューをコンパイルするようにMVCを設定できます。よりよく知られているコンテキストでエラーを表示することは非常に賢明かもしれません:http://stackoverflow.com/questions/383192/compile-views-in-asp-net-mvc – spender

答えて

1

+0

詳細をお寄せいただきありがとうございます。私はC#コンパイラの仕組みに関する多くの情報を見つけることができません – devfreak

8

変数imageを宣言するときは、初期値を与えます。

string image = ""; 

あなたが取得しているエラーは、(condがtrueの場合、それだけ初期化される)変数はすべての場合に初期化されていないことを示しています。

これは、.aspxページに含まれることとは関係ありません。コード内に同じエラーが発生します。あなた - あなたが理由ではなく、ソリューション(あなたはすでに知っていること)後にしている場合は

string image; 
if(cond) 
    image = "somestring"; 
else 
    image = String.Empty; 
+0

ありがとう。私はC++の土地から来ています。あなたはこのスタッフを完全に支配しています。私はC#のすべての制限に慣れなければならないと思います。 – devfreak

+3

"フルコントロール"の利点の多くは、単にあなたが望遠鏡の視力で足に自分自身を撮影することを可能にすることを意味します。これは制限ではありません...コンパイラはあなたに大きな好意を持っています。 – spender

+1

+1を投函します。コンパイラはあなたが愚かな間違いをしないように助けています。あなたが限界と呼ぶものは、私は世俗的な仕事の自動化を呼びます。 – Chev

1

あるいはさらに良いがデフォルト値に設定した場合、あなたに他を追加することです変数を宣言すると何も起こりません。あなたが何かを割り当てるときだけ、コンパイラはメモリ空間とすべてを予約します。

まだ初期化されていない変数にアクセスしようとすると、マシンのメモリにはどこにも行かないので有効ではありません。まだ何もありません。

これはそこにないバケットを持ち上げようとしているようなものです。空のバケットではありません。完全なバケットではありません。持ち上げるバケットはありません。

+0

はい、これはわずかに優れています。この方法では割り当てが1つ少なくなるからです。ありがとう – devfreak

+0

@devfreakイメージサーバー側にソースを直接設定して、割り当てを0にすることができます。if(cond)Image1.Src = "somestring";その他Image1.Src = "somethingelse"; –

関連する問題