关于C#定义值类型的问题

C#中,我定义一个整形a,不给他赋值,无法输出
我定义一个整形数组,不赋值,可以输出,输出结果为0
为什么会有这个差别?

int a;
int[] b;

a是值类型, b是引用类型, 如果学过c\c++的应该知道指针, b本身存在一个内存地址里面, 指向一个内存地址, 用的时候是*b, 直接输出的是b, 不赋值就是空指针(NULL., 0)

int a;int[] b;这样写不管是整型还是整型数组,没有初始化都会报错;你说的整型数组不赋值但是不报错,你应该是这样写的int[] b = new int[1]
之所以你这样写不会报错,是因为new int[1]的时候已经给数组里面的成员初始化值了,int类型的默认值是0;因此才可以打印出来。需要弄清楚的是
int a;这样写仅仅是一个变量;而int a =后面的才是一个对象;把这个对象(或者对象的引用地址)赋值这个变量,这样的话这个变量才会有内容,才能输出;
描述的不是特别专业,这是我的个人理解吧