C#基础---值类型和引用类型

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中的键/值对集合,键不能为空引用,值可以。

原文地址:https://www.cnblogs.com/SharonHwang/p/6836054.html