可卡的空间

我的空间,我作主!

导航

基础知识--值类型和引用类型

经过最近二次的面试才发现,惭愧,基础知识几乎全忘记了,怎么对得起我们的老师呀?想当时在学校的时候这些概论的倒背如流,现在用多了反而概念都忘记。笔试都不过还有机会面试吗?所以还是恶补一下基础知识吧。

1、值类型
有两种值类型,结构和枚举
1)结构
堆栈分配的类型比堆式分配类型至少多出三个好处:1、空间分配比堆式分类型要快;2、在堆栈中的值用完以后,会立即自动解除分配;3、一个值类型的变量的值可以复制到另一个值类型的变量,用等号就可以;
注意点:1、如果一个结构在没有new之前,他也是可以使用并设置值的;2、如果没有new,且没有设置值就获得它的值是不允许的。3、如果没有new,那么结构不能复制到另一个结构上的,即不能用等号进行赋值的。

和C/C++不同的时,结构中它们的数据成员默认是私有的;

在C#中,结构可以完成类能完成的大多数任务,但不支持继承;但使用它们的时候要记住,结构的实例是占用堆栈窨比较适合于表示相对较小的对象。
2)枚举
枚举是用户定义的整数类型。
如果要给一个不在可接受组值范围内的值赋值枚举的一个实例,编译会出错。前天面试有一个程序改错题就是这个知识点。
有人说,创建一个枚举从长远来看是可以节约大量时间的,聪明地、适当地使用枚举是专业开发人员的一个特点。

2、引用类型
除了类以外,在C#中还支持许多复合引用类型:接口、委托和数值
1)类
太常用了,倒不知道怎么不定义。我想如果哪个考官问什么是类?不是他是SB,就是我是SB。真不知道怎么回答。封装了数据、访问、操作数据的功能?
2)接口
为实现他们的类定义功能,可以包含属性、方法、事件和索引符。
接口不能被实例化,且不包含方法的执行方式,即接口方法不包含执行该方法的任何代码
3)委托
要讲太多了,委托和事件比较紧,可以专门写它
4)数组
语法是 int[] mint; 定义大小的话就实例化 mint=new int[30]
这是一个长度为30的int类型数组,下标号是0-29;30就会报错
可以在{}中为数组进行初始化值
string[] mstring={"a","b","c"} 等价于乎sting[] mstring=new string[]{"a","b","c"}

注意,不能用变量来设置数组长度,如
int len=3;
string[] mstring=new string[len]{"a","b","c"};
这是错误的,但可以把len设置成常量倒可以
const int len=3;

想动态改变可以用arraylist




posted on 2006-07-14 11:31  kwame  阅读(391)  评论(0编辑  收藏  举报