1、先附上一份值类型和引用类型各自的成员
2、值类型和引用类型的区别
- 值类型直接存储其值,引用类型存储其值的引用
- 值类型变量都存储在堆栈中,引用类型在托管堆中分配存储单元
- 值类型变量不能为null,必须有确定的值,引用类型被赋值前的值都是null
- 值类型是从System.ValueType类继承而来的类型
3、值类型
struct类型:由一系列具有相同类型或不同类型的数据构成的数据集合
static void Main(string[] args)
{
Person person = new Person();
person.age = 10;
Console.WriteLine(person.age);
Console.Read();
}
struct Person
{
public int age;
public string name;
public string fname;
public string lname;
}
enmu类型:
3、类型转换
- 隐式转换:从类型A转换成类型B的转换可在任何情况下进行,转换规则简单,可由编译器自行完成转换。
- 显示转换:从类型A转换成类型B的转换只能在某些情况下进行,转换规则较复杂,应进行某些类型的处理。
- 装箱:将值类型转换成引用类型的过程。
- 拆箱:将引用类型转换成值类型的过程。
4、常量
使用关键字const创建常量,创建常量时必须设置其初始值,一旦设置不允许修改。
5、字符和字符串
Char只定义一个Unicode字符
String类定义的变量是一个引用类型,可以对String类型的变量进行null赋值。
StringBuilder:可变字符串类,存在与System.Text。
String和StringBuilder的区别:
String对象是不可改变的,每次使用String方法时,都要在内存中创建一个新的字符串对象,就需要为该新的对象分配新的空间
StringBuilder对象时可修改的。
6、数组和集合
(1)数组
数组的特点:
- 同一数组中只能存放同一类型变量
- 数组的大小易经定义不可更改
- 数组成员在内存连续存放
- 数组下标从0开始
- 从抽象基类Array派生的引用类型
(2)ArrayList类
- ArrayList位于System.Collections命名空间下
- ArrayLisr容量可根据需要扩充,默认是(16)
- 只能是一维形式
(3)Hashtable
存储在DictionaryEntry中的键/值对集合,键不能为空引用,值可以。