System.Dynamic.ExpandoObject中的拳击行为差异

时间:2014-12-11 09:33:49

标签: c# boxing expandoobject unboxing

我最近开始用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

造成这种差异的潜在机制是什么?

0 个答案:

没有答案