为什么我不需要在C#中的ContentPlaceHolder类中使用new关键字?

时间:2012-11-02 21:30:17

标签: c# asp.net master-pages

在ASP.NET中,拥有MasterPage并使用C#,我可以在ContentPlaceHolder关键字的情况下使用new,并且此类的方法和属性数量相同。

即,两者

ContentPlaceHolder ctph;

ContentPlaceHolder ctph = new ContenPlanceHolder();

具有相同的方法和属性。我不明白为什么我可以在没有new关键字的情况下使用ctph变量。

2 个答案:

答案 0 :(得分:2)

ContentPlaceHolder ctph;

ctph的值为default(ContentPlaceHolder)。对于引用类型,这将是null。对于值类型,这将是一个有效的对象,所有字段都默认初始化。

ContentPlaceHolder是一种参考类型,所以,当你说:

  

具有相同的方法和属性。

嗯,是的,因为那些是由类型定义的。你是通过Intellisense确定的吗?嗯......不要。尝试调用方法,看看会发生什么。

答案 1 :(得分:0)

是的,但是你能在运行时做到吗?

Intellisense(拼写?)是一个纯粹的编译时构造,它不知道你的第一个例子在运行时会变为null并抛出异常。它只列出了基于元数据的方法和属性等。