标签:
it |
分类: .NET |
昨天考试中遇到一道这样的题目,大概是如下形式:
下列关于c#说法错误的是:(选择两项)
A
类可以实例化为对象
C类可以调用非静态成员 D对象可以调用静态成员
一眼扫下来,我发现BCD三个选择都是错误的,BC选择错的很明显,而D选项的错误在于静态成员只能由类型对象来调用,而实例对象是不能调用静态成员的。回到寝室,我愈来感觉问题似乎不像我想象的那么简单,我发现从理论上说实例对象也应该是可以调用静态成员的,至少有途径可以办到,为了将这个问题阐述的更加清楚,让我们来分析一下托管堆中创建对象和对象运行时在内存的一些情况。
首先对于托管应用程序来说,内存中最为重要的布局有两个地方,一个是线程堆栈,也就是应用程序调用方法,保存变量,指针的内存区域,另一个便是托管堆,堆中的内存常常被用来创建引用类