在ASP.NET中,拥有MasterPage并使用C#,我可以在ContentPlaceHolder
关键字的情况下使用new
,并且此类的方法和属性数量相同。
即,两者
ContentPlaceHolder ctph;
和
ContentPlaceHolder ctph = new ContenPlanceHolder();
具有相同的方法和属性。我不明白为什么我可以在没有new关键字的情况下使用ctph
变量。
答案 0 :(得分:2)
ContentPlaceHolder ctph;
ctph
的值为default(ContentPlaceHolder)
。对于引用类型,这将是null
。对于值类型,这将是一个有效的对象,所有字段都默认初始化。
ContentPlaceHolder
是一种参考类型,所以,当你说:
具有相同的方法和属性。
嗯,是的,因为那些是由类型定义的。你是通过Intellisense确定的吗?嗯......不要。尝试调用方法,看看会发生什么。
答案 1 :(得分:0)
是的,但是你能在运行时做到吗?
Intellisense(拼写?)是一个纯粹的编译时构造,它不知道你的第一个例子在运行时会变为null并抛出异常。它只列出了基于元数据的方法和属性等。