ビューのデバッグ中に興味深い効果に遭遇しました。シナリオは簡単に再現できます。View追加したウォッチ ウィンドウにブレークポイントがViewBag.ViewDataあり、値はnullです。ViewBagただし、オブジェクトを追加して展開するだけで、 が表示され、ViewDataではありませんnull。また、正常に展開してそのプロパティを確認することもできます。
それがバグなのか、それともこの動作の原因なのか、誰か説明できますか?

編集
ViewBag.ViewDataは実際にnull。たとえば、ビューにこのコードがある場合:
if (ViewBag.ViewData == null)
{
<span>ViewBag.ViewData is null</span>
}
スパンを表示します。奇妙な点は、ウォッチ ウィンドウで展開してプロパティを表示できることです。
EDIT2
@Darin Dimitrov の回答に応えて - カスタム テスト クラスでこの動作を再現しよRuntimeBinderExceptionうとしましたが、プライベート プロパティにアクセスしようとすると、次のようになり'SomeClass.SomeProperty' is inaccessible due to its protection levelます。
public class SomeClass
{
private string SomeProperty;
}
dynamic dynamicObject = new SomeClass();
if (dynamicObject.SomeProperty == null)
{
Console.WriteLine("dynamicObject.SomeProperty is null");
}
この場合、ViewBag.ViewDataView でアクセスしたときに同じ例外が発生するのではないif (ViewBag.ViewData == null)でしょうか ( の行)。