C#中关于对值类型和引用类型初始化的问题
值类型的话inti=newint();它的初始值就是0;那么引用类型:classAAa=newA();通过调用默认构造函数(不人为修改默认构造函数),那他的初始值是什么?...
值类型的话
int i = new int();
它的初始值就是0;
那么引用类型:
class A
A a = new A();
通过调用默认构造函数(不人为修改默认构造函数),那他的初始值是什么?是null??
如果类A包含了字段,属性和方法,那这些初始值都是为null吗??可是字段如果是值类型(如int),初始值是null会不会说不通?恳请大神讲解。 展开
int i = new int();
它的初始值就是0;
那么引用类型:
class A
A a = new A();
通过调用默认构造函数(不人为修改默认构造函数),那他的初始值是什么?是null??
如果类A包含了字段,属性和方法,那这些初始值都是为null吗??可是字段如果是值类型(如int),初始值是null会不会说不通?恳请大神讲解。 展开
2个回答
推荐于2016-07-21
展开全部
引用类型A new后就为其分配了内存,调用构造函数初始化 这时a就是一个A类型的对象了
如果不使用new对其进行初始化,那么a默认为null
A a; // a为null
值类型不能为null,哪怕不使用new对其初始化值类型依旧拥有默认值
int i; // i为0
如果不使用new对其进行初始化,那么a默认为null
A a; // a为null
值类型不能为null,哪怕不使用new对其初始化值类型依旧拥有默认值
int i; // i为0
更多追问追答
追问
如果使用了new调用默认构造函数来初始化呢,相应的字段、属性和方法都有初始值吗??如果在默认构造函数中没有对他们进行初始化,是否会报错?
追答
对于值类型new不new都会有初始值 ,引用类型不new就是null
对于值类型,如果构造函数没有对他的引用类型的成员初始化 他的引用类型的成员就是null
struct Val{
String str;//引用类型
int i; //值类型
}
Val v;
// v . str 为null
// i 为 0
但是如果是引用类型没有new,他就是null,意思是没有分配任何内存空间 所以他所包含的对象全都不存在
class C{
String s;
int i;
}
C c;// null
未初始化并不会报错 但是尝试访问null对象的成员会造成错误
And....虽然值类型不new也能获得初始值 但是如果不赋值就调用会触发编译错误
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询