7

私はおそらく一生懸命働いてきましたが、誰かがImmediate窓から取った次のことを私に説明できますか?

(int)DateTime.Now.Date.DayOfWeek= 4

(int)DayOfWeek.Sunday= 0

(int)DateTime.Now.Date.DayOfWeek - (int)DayOfWeek.Sunday= 4

しかし
(int)DayOfWeek.Sunday - (int)DateTime.Now.Date.DayOfWeek=式を評価できませんでし た`

読んでくれてありがとう。

編集:

通常のコードではなく、この奇妙な結果を私に与えているのはイミディエイトウィンドウです。

スクリーンショット:http://ploader.net/files/0c2556df475b3075634d7fd2b0575794.PNG

EDIT2:

コミュニティはVS2010のバグだと思っているようです。@EricLippertまたは@JonSkeetがこれを確認するために少し時間を割くことができるか、そうでない場合は、この動作についての説明を提供できるかどうか疑問に思います。

4

2 に答える 2

5

定数 0 と非リテラル値に固有のようです。以下は問題なく動作します。

int zero = 0;
zero - (int)DateTime.Now.Date.DayOfWeek
-4

以下は失敗しますが:

int four = 4;
0 - four
Could not evaluate expression

更新: 同様のバグ レポートが見つからなかったため、作成しました: https://connect.microsoft.com/VisualStudio/feedback/details/679501/integer-literal-0-integer-variable-could-not-evaluate -expression-immediate-window

更新 #2: Microsoft は問題を再現することができ、「修正しない」として解決しました。これは、Visual Studio の次のバージョンには希望がありますが、VS2010 には希望がないことを意味します。

于 2011-07-14T17:14:51.093 に答える
3

私にはわかりません、それは私にはバグのように見えます。

// This doesn't work
0 - (int)DateTime.Now.Date.DayOfWeek

// But loads of similar variations do:
1 - (int)DateTime.Now.Date.DayOfWeek
-1 - (int)DateTime.Now.Date.DayOfWeek
a - (int)DateTime.Now.Date.DayOfWeek
0 - (int)DayOfWeek.Thursday

いずれの場合も、コンパイルされたコードではすべてが期待どおりに動作します。

于 2011-07-14T16:16:46.403 に答える