我最近开始用C#编写代码并编写ASP.NET MVC应用程序。我正在做类似的事情:
var hashtable = new Hashtable();
hashtable.Add("First", 12);
hashtable.Add("Second", 12);
if(hashtable["First"] == hashtable["Second"])
{
Console.WriteLine("Equal");
}
else{
Console.WriteLine("Not Equal");
}
始终输出 Not Equal
。过了一会儿,我意识到这是拳击的影响。但是,如果我写下以下内容:
var hashtable = new Hashtable();
hashtable.Add("First", 12);
hashtable.Add("Second", 12);
dynamic ViewBag = new System.Dynamic.ExpandoObject();
ViewBag.hashtable = hashtable;
if(ViewBag.hashtable["First"] == ViewBag.hashtable["Second"])
{
Console.WriteLine("Equal");
}
else
{
Console.WriteLine("Not Equal");
}
始终输出 Equal
。
造成这种差异的潜在机制是什么?