NET基础课-- 类型基础(NET之美)

时间:2022-03-16 22:54:05

1.类型:值类型  引用类型。

分类依据:类型在内存的分配方式。值类型在堆栈,引用类型在托管堆。

名词:栈--所有变量都会被分配在栈上,只不过值类型直接含有数据,引用类型含有一个指向托管堆对象的地址。

含有一个堆上对象的地址的变量叫变量指向此对象或变量引用此对象。

值类型:简单类型(基类库类型别名) int  byte等

声明一个int类型实际是声明一个system.int32的结构类型变量,此变量包含了值类型(此处为结构体)中所有字段

结构   枚举

引用类型:类  委托 接口等

2.变量初始化问题

public struct Point
{
public int x;
} class Program
{
static void Main(string[] args)
{
Point p;//结构类型变量本身就是一个实例
Console.WriteLine(p.x);//编译器提示可能引用了未赋值的字段x 应该在此之前加p.x=10;
Console.ReadKey();
}
}

  但是另外一种情况  直接通过并打印出0.注意区别。原因是类在初始化时字段也会进行初始化。

 public class Point
{
public int x;
} class Program
{
static void Main(string[] args)
{
Point p = new Point();//注意这里 一定先初始化,否则编译器提示使用未赋值的局部变量
Console.WriteLine(p.x);
Console.ReadKey();
}
}

3.未将对象引用设置到对象的实例,见如下例子。原因是:a是一个对象引用,没有new过即没有指向任何实际对象。

object a = null;
Console.WriteLine(a.ToString());